Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
862506b6
Commit
862506b6
authored
Jun 12, 2003
by
Sinisa@sinisa.nasamreza.org
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Derived tables bug fix .......
parent
19a17f60
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
44 additions
and
12 deletions
+44
-12
mysql-test/r/innodb.result
mysql-test/r/innodb.result
+5
-5
sql/ha_myisam.cc
sql/ha_myisam.cc
+12
-0
sql/sql_base.cc
sql/sql_base.cc
+3
-1
sql/sql_derived.cc
sql/sql_derived.cc
+10
-2
sql/sql_table.cc
sql/sql_table.cc
+13
-4
sql/table.h
sql/table.h
+1
-0
No files found.
mysql-test/r/innodb.result
View file @
862506b6
...
...
@@ -1322,10 +1322,10 @@ SELECT t2.id, t1.label FROM t2 INNER JOIN
(SELECT t1.id_object as id_object FROM t1 WHERE t1.label LIKE '%test%') AS lbl
ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);
id label
3382
Fournisseur
Test
102
Fournisseur Test
1794
Fournisseur Test
1822
Fournisseur Test
3524
Fournisseur
Test
3382 Test
102
Le Pekin (Test)
1794
Test de resto
1822
Test 3
3524
Societe
Test
3525 Fournisseur Test
drop table t1,t2;
sql/ha_myisam.cc
View file @
862506b6
...
...
@@ -701,12 +701,20 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize)
void
ha_myisam
::
deactivate_non_unique_index
(
ha_rows
rows
)
{
MYISAM_SHARE
*
share
=
file
->
s
;
bool
do_warning
=
0
;
if
(
share
->
state
.
key_map
==
((
ulonglong
)
1L
<<
share
->
base
.
keys
)
-
1
)
{
if
(
!
(
specialflag
&
SPECIAL_SAFE_MODE
))
{
if
(
rows
==
HA_POS_ERROR
)
{
uint
orig_update
=
file
->
update
;
file
->
update
^=
HA_STATE_CHANGED
;
uint
check_update
=
file
->
update
;
mi_extra
(
file
,
HA_EXTRA_NO_KEYS
,
0
);
do_warning
=
(
file
->
update
==
check_update
)
&&
file
->
state
->
records
;
file
->
update
=
orig_update
;
}
else
{
/*
...
...
@@ -731,6 +739,10 @@ void ha_myisam::deactivate_non_unique_index(ha_rows rows)
}
else
enable_activate_all_index
=
0
;
if
(
do_warning
)
push_warning_printf
(
current_thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_ILLEGAL_HA
,
ER
(
ER_ILLEGAL_HA
),
table
->
table_name
);
}
...
...
sql/sql_base.cc
View file @
862506b6
...
...
@@ -789,6 +789,7 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name,
DBUG_RETURN
(
0
);
}
table
->
query_id
=
thd
->
query_id
;
table
->
clear_query_id
=
1
;
thd
->
tmp_table_used
=
1
;
goto
reset
;
}
...
...
@@ -2050,8 +2051,9 @@ bool setup_tables(TABLE_LIST *tables)
table
->
keys_in_use_for_query
&=
~
map
;
}
table
->
used_keys
&=
table
->
keys_in_use_for_query
;
if
(
table_list
->
shared
)
if
(
table_list
->
shared
||
table
->
clear_query_id
)
{
table
->
clear_query_id
=
0
;
/* Clear query_id that may have been set by previous select */
for
(
Field
**
ptr
=
table
->
field
;
*
ptr
;
ptr
++
)
(
*
ptr
)
->
query_id
=
0
;
...
...
sql/sql_derived.cc
View file @
862506b6
...
...
@@ -122,6 +122,16 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit,
res
=
-
1
;
goto
exit
;
}
/*
This is done in order to redo all field optimisations when any of the
involved tables is used in the outer query
*/
if
(
tables
)
{
for
(
TABLE_LIST
*
cursor
=
tables
;
cursor
;
cursor
=
cursor
->
next
)
cursor
->
table
->
clear_query_id
=
1
;
}
item_list
=
select_cursor
->
item_list
;
select_cursor
->
with_wild
=
0
;
...
...
@@ -223,8 +233,6 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit,
/* Add new temporary table to list of open derived tables */
table
->
next
=
thd
->
derived_tables
;
thd
->
derived_tables
=
table
;
thd
->
query_id
++
;
query_id
++
;
}
exit:
...
...
sql/sql_table.cc
View file @
862506b6
...
...
@@ -1835,10 +1835,19 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
/* COND_refresh will be signaled in close_thread_tables() */
break
;
case
DISABLE
:
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
wait_while_table_is_used
(
thd
,
table
);
VOID
(
pthread_mutex_unlock
(
&
LOCK_open
));
table
->
file
->
deactivate_non_unique_index
(
HA_POS_ERROR
);
if
(
table
->
db_type
==
DB_TYPE_MYISAM
)
{
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
wait_while_table_is_used
(
thd
,
table
);
VOID
(
pthread_mutex_unlock
(
&
LOCK_open
));
table
->
file
->
deactivate_non_unique_index
(
HA_POS_ERROR
);
}
else
push_warning_printf
(
current_thd
,
MYSQL_ERROR
::
WARN_LEVEL_WARN
,
ER_ILLEGAL_HA
,
ER
(
ER_ILLEGAL_HA
),
table
->
table_name
);
break
;
/* COND_refresh will be signaled in close_thread_tables() */
break
;
}
...
...
sql/table.h
View file @
862506b6
...
...
@@ -116,6 +116,7 @@ struct st_table {
my_bool
crashed
;
my_bool
is_view
;
my_bool
no_keyread
;
my_bool
clear_query_id
;
/* To reset query_id for tables and cols */
Field
*
next_number_field
,
/* Set if next_number is activated */
*
found_next_number_field
,
/* Set on open */
*
rowid_field
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment