summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--myisam/mi_check.c2
-rw-r--r--myisam/myisamchk.c6
-rw-r--r--mysql-test/r/func_in.result9
-rw-r--r--mysql-test/r/myisam.result4
-rw-r--r--mysql-test/t/func_in.test7
-rw-r--r--sql/ha_myisam.cc2
-rw-r--r--sql/mysqld.cc8
-rw-r--r--sql/sql_select.cc1
8 files changed, 27 insertions, 12 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c
index 1f453278eea..79fafd0cf5b 100644
--- a/myisam/mi_check.c
+++ b/myisam/mi_check.c
@@ -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:
diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c
index 10308408b1f..4fc0e560911 100644
--- a/myisam/myisamchk.c
+++ b/myisam/myisamchk.c
@@ -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, "",
diff --git a/mysql-test/r/func_in.result b/mysql-test/r/func_in.result
index a0868d09242..8562937f1ac 100644
--- a/mysql-test/r/func_in.result
+++ b/mysql-test/r/func_in.result
@@ -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);
diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result
index 99f84f0a67b..0e5969ed83e 100644
--- a/mysql-test/r/myisam.result
+++ b/mysql-test/r/myisam.result
@@ -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;
diff --git a/mysql-test/t/func_in.test b/mysql-test/t/func_in.test
index 7bf737402ef..dd4edd8ca48 100644
--- a/mysql-test/t/func_in.test
+++ b/mysql-test/t/func_in.test
@@ -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
#
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index 0198929033e..6b88656dd76 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -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, "",
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index d1e4d392e26..103fcf20c11 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -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;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 38466582931..5fc97385f15 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -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