Commit 59140334 authored by monty@mysql.com's avatar monty@mysql.com

merge with 4.0 to get fix for range bug

parents 8e613176 1976b25d
...@@ -827,8 +827,6 @@ static MYSQL* spawn_init(MYSQL* parent, const char* host, ...@@ -827,8 +827,6 @@ static MYSQL* spawn_init(MYSQL* parent, const char* host,
else if (parent->options.db) else if (parent->options.db)
child->options.db = my_strdup(parent->options.db, MYF(0)); child->options.db = my_strdup(parent->options.db, MYF(0));
child->options.rpl_parse = child->options.rpl_probe = child->rpl_pivot = 0;
return child; return child;
} }
...@@ -842,9 +840,6 @@ STDCALL mysql_set_master(MYSQL* mysql, const char* host, ...@@ -842,9 +840,6 @@ STDCALL mysql_set_master(MYSQL* mysql, const char* host,
mysql_close(mysql->master); mysql_close(mysql->master);
if (!(mysql->master = spawn_init(mysql, host, port, user, passwd))) if (!(mysql->master = spawn_init(mysql, host, port, user, passwd)))
return 1; return 1;
mysql->master->rpl_pivot = 0;
mysql->master->options.rpl_parse = 0;
mysql->master->options.rpl_probe = 0;
return 0; return 0;
} }
......
...@@ -279,6 +279,16 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -279,6 +279,16 @@ id select_type table type possible_keys key key_len ref rows Extra
SELECT * FROM t1 WHERE a IN(1,2) AND b=5; SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
a b a b
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a int, b int, c int, INDEX (c,a,b));
INSERT INTO t1 VALUES (1,0,0),(1,0,0),(1,0,0);
INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0);
SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1);
COUNT(*)
6
SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1);
COUNT(*)
6
DROP TABLE t1;
create table t1 (id int(10) primary key); create table t1 (id int(10) primary key);
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9); insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
select id from t1 where id in (2,5,9) ; select id from t1 where id in (2,5,9) ;
......
...@@ -226,7 +226,18 @@ INSERT INTO t1 VALUES ...@@ -226,7 +226,18 @@ INSERT INTO t1 VALUES
# we expect that optimizer will choose index on A # we expect that optimizer will choose index on A
EXPLAIN SELECT * FROM t1 WHERE a IN(1,2) AND b=5; EXPLAIN SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
SELECT * FROM t1 WHERE a IN(1,2) AND b=5; SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
DROP TABLE t1;
#
# Test error with
#
CREATE TABLE t1 (a int, b int, c int, INDEX (c,a,b));
INSERT INTO t1 VALUES (1,0,0),(1,0,0),(1,0,0);
INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0);
# -- First reports 3; second reports 6
SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1);
SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1);
DROP TABLE t1; DROP TABLE t1;
# test for a bug with in() and unique key # test for a bug with in() and unique key
......
...@@ -68,7 +68,7 @@ public: ...@@ -68,7 +68,7 @@ public:
{} {}
inline bool is_same(SEL_ARG *arg) inline bool is_same(SEL_ARG *arg)
{ {
if (type != arg->type) if (type != arg->type || part != arg->part)
return 0; return 0;
if (type != KEY_RANGE) if (type != KEY_RANGE)
return 1; return 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment