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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
4f5d1273
Commit
4f5d1273
authored
Nov 21, 2001
by
serg@serg.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bad merge fixed
parent
4151fd0a
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
40 additions
and
39 deletions
+40
-39
mysql-test/r/myisam.result
mysql-test/r/myisam.result
+17
-0
sql/item_func.cc
sql/item_func.cc
+1
-4
sql/sql_base.cc
sql/sql_base.cc
+3
-3
sql/sql_delete.cc
sql/sql_delete.cc
+2
-1
sql/sql_parse.cc
sql/sql_parse.cc
+1
-1
sql/sql_select.cc
sql/sql_select.cc
+11
-27
sql/sql_union.cc
sql/sql_union.cc
+5
-3
No files found.
mysql-test/r/myisam.result
View file @
4f5d1273
...
...
@@ -31,3 +31,20 @@ check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
create table t1 (a int not null auto_increment, b int not null, primary key (a), index(b));
insert into t1 (b) values (1),(2),(2),(2),(2);
optimize table t1;
Table Op Msg_type Msg_text
test.t1 optimize status OK
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
t1 0 PRIMARY 1 a A 5 NULL NULL
t1 1 b 1 b A 1 NULL NULL
optimize table t1;
Table Op Msg_type Msg_text
test.t1 optimize status Table is already up to date
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
t1 0 PRIMARY 1 a A 5 NULL NULL
t1 1 b 1 b A 1 NULL NULL
drop table t1;
sql/item_func.cc
View file @
4f5d1273
...
...
@@ -2164,10 +2164,7 @@ bool Item_func_match::eq(const Item *item) const
double
Item_func_match
::
val
()
{
if
(
ft_handler
==
NULL
)
init_search
(
1
);
if
((
null_value
=
(
ft_handler
==
NULL
)))
return
0.0
;
return
-
1.0
;
if
(
join_key
)
{
...
...
sql/sql_base.cc
View file @
4f5d1273
...
...
@@ -2174,8 +2174,8 @@ bool remove_table_from_cache(THD *thd, const char *db, const char *table_name,
int
setup_ftfuncs
(
THD
*
thd
)
{
List_iterator
<
Item_func_match
>
li
(
thd
->
lex
.
ftfunc_list
),
lj
(
thd
->
lex
.
ftfunc_list
);
List_iterator
<
Item_func_match
>
li
(
thd
->
lex
.
select_lex
.
ftfunc_list
),
lj
(
thd
->
lex
.
select_lex
.
ftfunc_list
);
Item_func_match
*
ftf
,
*
ftf2
;
while
((
ftf
=
li
++
))
...
...
@@ -2195,7 +2195,7 @@ int setup_ftfuncs(THD *thd)
int
init_ftfuncs
(
THD
*
thd
,
bool
no_order
)
{
List_iterator
<
Item_func_match
>
li
(
thd
->
lex
.
ftfunc_list
);
List_iterator
<
Item_func_match
>
li
(
thd
->
lex
.
select_lex
.
ftfunc_list
);
Item_func_match
*
ifm
;
DBUG_PRINT
(
"info"
,(
"Performing FULLTEXT search"
));
thd
->
proc_info
=
"FULLTEXT initialization"
;
...
...
sql/sql_delete.cc
View file @
4f5d1273
...
...
@@ -52,7 +52,7 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ORDER *order,
table
->
file
->
info
(
HA_STATUS_VARIABLE
|
HA_STATUS_NO_LOCK
);
thd
->
proc_info
=
"init"
;
table
->
map
=
1
;
if
(
setup_conds
(
thd
,
table_list
,
&
conds
))
if
(
setup_conds
(
thd
,
table_list
,
&
conds
)
||
setup_ftfuncs
(
thd
)
)
DBUG_RETURN
(
-
1
);
/* Test if the user wants to delete all rows */
...
...
@@ -130,6 +130,7 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ORDER *order,
init_read_record
(
&
info
,
thd
,
table
,
select
,
1
,
1
);
deleted
=
0L
;
init_ftfuncs
(
thd
,
1
);
thd
->
proc_info
=
"updating"
;
while
(
!
(
error
=
info
.
read_record
(
&
info
))
&&
!
thd
->
killed
)
{
...
...
sql/sql_parse.cc
View file @
4f5d1273
...
...
@@ -1718,7 +1718,7 @@ mysql_execute_command(void)
table_count
))
&&
!
thd
->
fatal_error
)
{
res
=
mysql_select
(
thd
,
tables
,
select_lex
->
item_list
,
select_lex
->
where
,
select_lex
->
ftfunc_list
,
select_lex
->
where
,
(
ORDER
*
)
NULL
,(
ORDER
*
)
NULL
,(
Item
*
)
NULL
,
(
ORDER
*
)
NULL
,
select_lex
->
options
|
thd
->
options
|
...
...
sql/sql_select.cc
View file @
4f5d1273
...
...
@@ -35,11 +35,10 @@ const char *join_type_str[]={ "UNKNOWN","system","const","eq_ref","ref",
"MAYBE_REF"
,
"ALL"
,
"range"
,
"index"
,
"fulltext"
};
static
bool
make_join_statistics
(
JOIN
*
join
,
TABLE_LIST
*
tables
,
COND
*
conds
,
DYNAMIC_ARRAY
*
keyuse
,
List
<
Item_func_match
>
&
ftfuncs
);
DYNAMIC_ARRAY
*
keyuse
);
static
bool
update_ref_and_keys
(
THD
*
thd
,
DYNAMIC_ARRAY
*
keyuse
,
JOIN_TAB
*
join_tab
,
uint
tables
,
COND
*
conds
,
table_map
table_map
,
List
<
Item_func_match
>
&
ftfuncs
);
uint
tables
,
COND
*
conds
,
table_map
table_map
);
static
int
sort_keyuse
(
KEYUSE
*
a
,
KEYUSE
*
b
);
static
void
set_position
(
JOIN
*
join
,
uint
index
,
JOIN_TAB
*
table
,
KEYUSE
*
key
);
static
void
find_best_combination
(
JOIN
*
join
,
table_map
rest_tables
);
...
...
@@ -156,7 +155,6 @@ int handle_select(THD *thd, LEX *lex, select_result *result)
res
=
mysql_select
(
thd
,(
TABLE_LIST
*
)
select_lex
->
table_list
.
first
,
select_lex
->
item_list
,
select_lex
->
where
,
select_lex
->
ftfunc_list
,
(
ORDER
*
)
select_lex
->
order_list
.
first
,
(
ORDER
*
)
select_lex
->
group_list
.
first
,
select_lex
->
having
,
...
...
@@ -177,7 +175,6 @@ int handle_select(THD *thd, LEX *lex, select_result *result)
int
mysql_select
(
THD
*
thd
,
TABLE_LIST
*
tables
,
List
<
Item
>
&
fields
,
COND
*
conds
,
List
<
Item_func_match
>
&
ftfuncs
,
ORDER
*
order
,
ORDER
*
group
,
Item
*
having
,
ORDER
*
proc_param
,
ulong
select_options
,
select_result
*
result
)
{
...
...
@@ -220,7 +217,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
if
(
having
->
with_sum_func
)
having
->
split_sum_func
(
all_fields
);
}
if
(
setup_ftfuncs
(
thd
,
tables
,
ftfuncs
))
/* should be after having->fix_fields */
if
(
setup_ftfuncs
(
thd
))
/* should be after having->fix_fields */
DBUG_RETURN
(
-
1
);
/*
Check if one one uses a not constant column with group functions
...
...
@@ -408,8 +405,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
/* Calculate how to do the join */
thd
->
proc_info
=
"statistics"
;
if
(
make_join_statistics
(
&
join
,
tables
,
conds
,
&
keyuse
,
ftfuncs
)
||
thd
->
fatal_error
)
if
(
make_join_statistics
(
&
join
,
tables
,
conds
,
&
keyuse
)
||
thd
->
fatal_error
)
goto
err
;
thd
->
proc_info
=
"preparing"
;
result
->
initialize_tables
(
&
join
);
...
...
@@ -532,7 +528,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
make_join_readinfo
(
&
join
,
(
select_options
&
(
SELECT_DESCRIBE
|
SELECT_NO_JOIN_CACHE
))
|
(
ftfuncs
.
elements
?
SELECT_NO_JOIN_CACHE
:
0
));
(
thd
->
lex
.
select_lex
.
ftfunc_list
.
elements
?
SELECT_NO_JOIN_CACHE
:
0
));
/* Need to tell Innobase that to play it safe, it should fetch all
columns of the tables: this is because MySQL
...
...
@@ -599,18 +595,8 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
}
/* Perform FULLTEXT search before all regular searches */
if
(
ftfuncs
.
elements
)
{
List_iterator_fast
<
Item_func_match
>
li
(
ftfuncs
);
Item_func_match
*
ifm
;
DBUG_PRINT
(
"info"
,(
"Performing FULLTEXT search"
));
thd
->
proc_info
=
"FULLTEXT search init"
;
init_ftfuncs
(
thd
,
test
(
order
));
while
((
ifm
=
li
++
))
{
ifm
->
init_search
(
test
(
order
));
}
}
/* Create a tmp table if distinct or if the sort is too complicated */
if
(
need_tmp
)
{
...
...
@@ -902,8 +888,7 @@ static ha_rows get_quick_record_count(SQL_SELECT *select,TABLE *table,
static
bool
make_join_statistics
(
JOIN
*
join
,
TABLE_LIST
*
tables
,
COND
*
conds
,
DYNAMIC_ARRAY
*
keyuse_array
,
List
<
Item_func_match
>
&
ftfuncs
)
DYNAMIC_ARRAY
*
keyuse_array
)
{
int
error
;
uint
i
,
table_count
,
const_count
,
found_ref
,
refs
,
key
,
const_ref
,
eq_part
;
...
...
@@ -1015,7 +1000,7 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
if
(
conds
||
outer_join
)
if
(
update_ref_and_keys
(
join
->
thd
,
keyuse_array
,
stat
,
join
->
tables
,
conds
,
~
outer_join
,
ftfuncs
))
conds
,
~
outer_join
))
DBUG_RETURN
(
1
);
/* loop until no more const tables are found */
...
...
@@ -1524,8 +1509,7 @@ sort_keyuse(KEYUSE *a,KEYUSE *b)
static
bool
update_ref_and_keys
(
THD
*
thd
,
DYNAMIC_ARRAY
*
keyuse
,
JOIN_TAB
*
join_tab
,
uint
tables
,
COND
*
cond
,
table_map
normal_tables
,
List
<
Item_func_match
>
&
ftfuncs
)
uint
tables
,
COND
*
cond
,
table_map
normal_tables
)
{
uint
and_level
,
i
,
found_eq_constant
;
...
...
@@ -1553,7 +1537,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
add_key_part
(
keyuse
,
field
);
}
if
(
ftfuncs
.
elements
)
if
(
thd
->
lex
.
select_lex
.
ftfunc_list
.
elements
)
{
add_ft_keys
(
keyuse
,
join_tab
,
cond
,
normal_tables
);
}
...
...
@@ -1561,7 +1545,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
/*
** remove ref if there is a keypart which is a ref and a const.
** remove keyparts without previous keyparts.
** Special treatment for ft-keys.
SerG.
** Special treatment for ft-keys.
*/
if
(
keyuse
->
elements
)
{
...
...
sql/sql_union.cc
View file @
4f5d1273
...
...
@@ -68,7 +68,6 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
res
=
mysql_select
(
thd
,
(
TABLE_LIST
*
)
sl
->
table_list
.
first
,
sl
->
item_list
,
sl
->
where
,
sl
->
ftfunc_list
,
(
sl
->
braces
)
?
(
ORDER
*
)
sl
->
order_list
.
first
:
(
ORDER
*
)
0
,
(
ORDER
*
)
sl
->
group_list
.
first
,
sl
->
having
,
...
...
@@ -127,7 +126,6 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
res
=
mysql_select
(
thd
,
(
TABLE_LIST
*
)
sl
->
table_list
.
first
,
sl
->
item_list
,
sl
->
where
,
sl
->
ftfunc_list
,
(
sl
->
braces
)
?
(
ORDER
*
)
sl
->
order_list
.
first
:
(
ORDER
*
)
0
,
(
ORDER
*
)
sl
->
group_list
.
first
,
sl
->
having
,
...
...
@@ -150,8 +148,12 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
/* Create a list of fields in the temporary table */
List_iterator
<
Item
>
it
(
item_list
);
Field
**
field
;
#if 0
List<Item_func_match> ftfunc_list;
ftfunc_list.empty();
#else
thd
->
lex
.
select_lex
.
ftfunc_list
.
empty
();
#endif
for
(
field
=
table
->
field
;
*
field
;
field
++
)
{
...
...
@@ -170,7 +172,7 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
thd
->
options
&=
~
OPTION_FOUND_ROWS
;
}
res
=
mysql_select
(
thd
,
&
result_table_list
,
item_list
,
NULL
,
ftfunc_list
,
order
,
item_list
,
NULL
,
/*ftfunc_list,*/
order
,
(
ORDER
*
)
NULL
,
NULL
,
(
ORDER
*
)
NULL
,
thd
->
options
,
result
);
}
...
...
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