Manually merged
This commit is contained in:
commit
9a05a887de
@ -3994,7 +3994,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info,
|
||||
...
|
||||
The 'unique' array is collected in one sequential scan through the entire
|
||||
index. This is done in two places: in chk_index() and in sort_key_write().
|
||||
Statistics collection may consider NULLs as either equal or inequal (see
|
||||
Statistics collection may consider NULLs as either equal or unequal (see
|
||||
SEARCH_NULL_ARE_NOT_EQUAL, MI_STATS_METHOD_*).
|
||||
|
||||
Output is an array:
|
||||
|
@ -67,7 +67,7 @@ static const char *field_pack[]=
|
||||
"no zeros", "blob", "constant", "table-lockup",
|
||||
"always zero","varchar","unique-hash","?","?"};
|
||||
|
||||
static const char *myisam_stats_method_str="nulls_inequal";
|
||||
static const char *myisam_stats_method_str="nulls_unequal";
|
||||
|
||||
static void get_options(int *argc,char * * *argv);
|
||||
static void print_version(void);
|
||||
@ -339,7 +339,7 @@ static struct my_option my_long_options[] =
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"stats_method", OPT_STATS_METHOD,
|
||||
"Specifies how index statistics collection code should threat NULLs. "
|
||||
"Possible values of name are \"nulls_inequal\" (default behavior for 4.1/5.0), and \"nulls_equal\" (emulate 4.0 behavior).",
|
||||
"Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), and \"nulls_equal\" (emulate 4.0 behavior).",
|
||||
(gptr*) &myisam_stats_method_str, (gptr*) &myisam_stats_method_str, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
@ -471,7 +471,7 @@ static void usage(void)
|
||||
|
||||
#include <help_end.h>
|
||||
|
||||
const char *myisam_stats_method_names[] = {"nulls_inequal", "nulls_equal",
|
||||
const char *myisam_stats_method_names[] = {"nulls_unequal", "nulls_equal",
|
||||
NullS};
|
||||
TYPELIB myisam_stats_method_typelib= {
|
||||
array_elements(myisam_stats_method_names) - 1, "",
|
||||
|
@ -193,6 +193,15 @@ select * from t1 where a in (NULL, 'aa');
|
||||
a
|
||||
aa
|
||||
drop table t1;
|
||||
create table t1 (id int, key(id));
|
||||
insert into t1 values (1),(2),(3);
|
||||
select count(*) from t1 where id not in (1);
|
||||
count(*)
|
||||
2
|
||||
select count(*) from t1 where id not in (1,2);
|
||||
count(*)
|
||||
1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int PRIMARY KEY);
|
||||
INSERT INTO t1 VALUES (44), (45), (46);
|
||||
SELECT * FROM t1 WHERE a IN (45);
|
||||
|
@ -610,7 +610,7 @@ test.t2 984116287
|
||||
drop table t1, t2;
|
||||
show variables like 'myisam_stats_method';
|
||||
Variable_name Value
|
||||
myisam_stats_method nulls_inequal
|
||||
myisam_stats_method nulls_unequal
|
||||
create table t1 (a int, key(a));
|
||||
insert into t1 values (0),(1),(2),(3),(4);
|
||||
insert into t1 select NULL from t1;
|
||||
@ -651,7 +651,7 @@ t1 1 a 1 a A 5 NULL NULL YES BTREE
|
||||
set myisam_stats_method=DEFAULT;
|
||||
show variables like 'myisam_stats_method';
|
||||
Variable_name Value
|
||||
myisam_stats_method nulls_inequal
|
||||
myisam_stats_method nulls_unequal
|
||||
insert into t1 values (11);
|
||||
delete from t1 where a=11;
|
||||
analyze table t1;
|
||||
|
@ -102,6 +102,13 @@ insert into t1 values ('aa'), ('bb');
|
||||
select * from t1 where a in (NULL, 'aa');
|
||||
drop table t1;
|
||||
|
||||
# BUG#13419
|
||||
create table t1 (id int, key(id));
|
||||
insert into t1 values (1),(2),(3);
|
||||
select count(*) from t1 where id not in (1);
|
||||
select count(*) from t1 where id not in (1,2);
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
|
@ -39,7 +39,7 @@ const char *myisam_recover_names[] =
|
||||
TYPELIB myisam_recover_typelib= {array_elements(myisam_recover_names)-1,"",
|
||||
myisam_recover_names, NULL};
|
||||
|
||||
const char *myisam_stats_method_names[] = {"nulls_inequal", "nulls_equal",
|
||||
const char *myisam_stats_method_names[] = {"nulls_unequal", "nulls_equal",
|
||||
NullS};
|
||||
TYPELIB myisam_stats_method_typelib= {
|
||||
array_elements(myisam_stats_method_names) - 1, "",
|
||||
|
@ -432,7 +432,7 @@ char server_version[SERVER_VERSION_LENGTH];
|
||||
char *mysqld_unix_port, *opt_mysql_tmpdir;
|
||||
const char **errmesg; /* Error messages */
|
||||
const char *myisam_recover_options_str="OFF";
|
||||
const char *myisam_stats_method_str="nulls_inequal";
|
||||
const char *myisam_stats_method_str="nulls_unequal";
|
||||
/* name of reference on left espression in rewritten IN subquery */
|
||||
const char *in_left_expr_name= "<left expr>";
|
||||
/* name of additional condition */
|
||||
@ -5519,7 +5519,7 @@ The minimum value for this variable is 4096.",
|
||||
GET_ULONG, REQUIRED_ARG, 8192*1024, 4, ~0L, 0, 1, 0},
|
||||
{"myisam_stats_method", OPT_MYISAM_STATS_METHOD,
|
||||
"Specifies how MyISAM index statistics collection code should threat NULLs. "
|
||||
"Possible values of name are \"nulls_inequal\" (default behavior for 4.1/5.0), and \"nulls_equal\" (emulate 4.0 behavior).",
|
||||
"Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), and \"nulls_equal\" (emulate 4.0 behavior).",
|
||||
(gptr*) &myisam_stats_method_str, (gptr*) &myisam_stats_method_str, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"net_buffer_length", OPT_NET_BUFFER_LENGTH,
|
||||
@ -6106,7 +6106,7 @@ static void mysql_init_variables(void)
|
||||
query_id= thread_id= 1L;
|
||||
strmov(server_version, MYSQL_SERVER_VERSION);
|
||||
myisam_recover_options_str= sql_mode_str= "OFF";
|
||||
myisam_stats_method_str= "nulls_inequal";
|
||||
myisam_stats_method_str= "nulls_unequal";
|
||||
my_bind_addr = htonl(INADDR_ANY);
|
||||
threads.empty();
|
||||
thread_cache.empty();
|
||||
@ -6157,7 +6157,7 @@ static void mysql_init_variables(void)
|
||||
global_system_variables.old_passwords= 0;
|
||||
|
||||
/*
|
||||
Default behavior for 4.1 and 5.0 is to treat NULL values as inequal
|
||||
Default behavior for 4.1 and 5.0 is to treat NULL values as unequal
|
||||
when collecting index statistics for MyISAM tables.
|
||||
*/
|
||||
global_system_variables.myisam_stats_method= MI_STATS_METHOD_NULLS_NOT_EQUAL;
|
||||
|
@ -2386,7 +2386,6 @@ merge_key_fields(KEY_FIELD *start,KEY_FIELD *new_fields,KEY_FIELD *end,
|
||||
field Field used in comparision
|
||||
eq_func True if we used =, <=> or IS NULL
|
||||
value Value used for comparison with field
|
||||
Is NULL for BETWEEN and IN
|
||||
usable_tables Tables which can be used for key optimization
|
||||
|
||||
NOTES
|
||||
|
Loading…
x
Reference in New Issue
Block a user