Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1
into moonbone.local:/work/tmp_merge-4.1-opt-mysql
This commit is contained in:
commit
109d58af66
@ -83,3 +83,24 @@ b a
|
|||||||
3 3
|
3 3
|
||||||
3 3
|
3 3
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
CREATE TABLE `t1` (`id1` INT) ;
|
||||||
|
INSERT INTO `t1` (`id1`) VALUES (1),(5),(2);
|
||||||
|
CREATE TABLE `t2` (
|
||||||
|
`id1` INT,
|
||||||
|
`id2` INT NOT NULL,
|
||||||
|
`id3` INT,
|
||||||
|
`id4` INT NOT NULL,
|
||||||
|
UNIQUE (`id2`,`id4`),
|
||||||
|
KEY (`id1`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO `t2`(`id1`,`id2`,`id3`,`id4`) VALUES
|
||||||
|
(1,1,1,0),
|
||||||
|
(1,1,2,1),
|
||||||
|
(5,1,2,2),
|
||||||
|
(6,1,2,3),
|
||||||
|
(1,2,2,2),
|
||||||
|
(1,2,1,1);
|
||||||
|
SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` = 1 AND `id3` = 2);
|
||||||
|
id1
|
||||||
|
2
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
@ -2895,3 +2895,25 @@ select * from t1 where NOT(s1 = ALL (select s1/s1 from t1));
|
|||||||
s1
|
s1
|
||||||
2
|
2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
retailerID varchar(8) NOT NULL,
|
||||||
|
statusID int(10) unsigned NOT NULL,
|
||||||
|
changed datetime NOT NULL,
|
||||||
|
UNIQUE KEY retailerID (retailerID, statusID, changed)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES("0026", "1", "2005-12-06 12:18:56");
|
||||||
|
INSERT INTO t1 VALUES("0026", "2", "2006-01-06 12:25:53");
|
||||||
|
INSERT INTO t1 VALUES("0037", "1", "2005-12-06 12:18:56");
|
||||||
|
INSERT INTO t1 VALUES("0037", "2", "2006-01-06 12:25:53");
|
||||||
|
INSERT INTO t1 VALUES("0048", "1", "2006-01-06 12:37:50");
|
||||||
|
INSERT INTO t1 VALUES("0059", "1", "2006-01-06 12:37:50");
|
||||||
|
select * from t1 r1
|
||||||
|
where (r1.retailerID,(r1.changed)) in
|
||||||
|
(SELECT r2.retailerId,(max(changed)) from t1 r2
|
||||||
|
group by r2.retailerId);
|
||||||
|
retailerID statusID changed
|
||||||
|
0026 2 2006-01-06 12:25:53
|
||||||
|
0037 2 2006-01-06 12:25:53
|
||||||
|
0048 1 2006-01-06 12:37:50
|
||||||
|
0059 1 2006-01-06 12:37:50
|
||||||
|
drop table t1;
|
||||||
|
@ -90,3 +90,30 @@ SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE
|
|||||||
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
|
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
|
||||||
ORDER BY t1.b LIMIT 5;
|
ORDER BY t1.b LIMIT 5;
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
|
||||||
|
# BUG#21077 (The testcase is not deterministic so correct execution doesn't
|
||||||
|
# prove anything) For proof one should track if sequence of ha_innodb::* func
|
||||||
|
# calls is correct.
|
||||||
|
CREATE TABLE `t1` (`id1` INT) ;
|
||||||
|
INSERT INTO `t1` (`id1`) VALUES (1),(5),(2);
|
||||||
|
|
||||||
|
CREATE TABLE `t2` (
|
||||||
|
`id1` INT,
|
||||||
|
`id2` INT NOT NULL,
|
||||||
|
`id3` INT,
|
||||||
|
`id4` INT NOT NULL,
|
||||||
|
UNIQUE (`id2`,`id4`),
|
||||||
|
KEY (`id1`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO `t2`(`id1`,`id2`,`id3`,`id4`) VALUES
|
||||||
|
(1,1,1,0),
|
||||||
|
(1,1,2,1),
|
||||||
|
(5,1,2,2),
|
||||||
|
(6,1,2,3),
|
||||||
|
(1,2,2,2),
|
||||||
|
(1,2,1,1);
|
||||||
|
|
||||||
|
SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` = 1 AND `id3` = 2);
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
@ -1861,4 +1861,28 @@ select * from t1 where NOT(s1+1 = ANY (select s1 from t1));
|
|||||||
select * from t1 where (s1 = ALL (select s1/s1 from t1));
|
select * from t1 where (s1 = ALL (select s1/s1 from t1));
|
||||||
select * from t1 where NOT(s1 = ALL (select s1/s1 from t1));
|
select * from t1 where NOT(s1 = ALL (select s1/s1 from t1));
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #16255: Subquery in where
|
||||||
|
#
|
||||||
|
create table t1 (
|
||||||
|
retailerID varchar(8) NOT NULL,
|
||||||
|
statusID int(10) unsigned NOT NULL,
|
||||||
|
changed datetime NOT NULL,
|
||||||
|
UNIQUE KEY retailerID (retailerID, statusID, changed)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES("0026", "1", "2005-12-06 12:18:56");
|
||||||
|
INSERT INTO t1 VALUES("0026", "2", "2006-01-06 12:25:53");
|
||||||
|
INSERT INTO t1 VALUES("0037", "1", "2005-12-06 12:18:56");
|
||||||
|
INSERT INTO t1 VALUES("0037", "2", "2006-01-06 12:25:53");
|
||||||
|
INSERT INTO t1 VALUES("0048", "1", "2006-01-06 12:37:50");
|
||||||
|
INSERT INTO t1 VALUES("0059", "1", "2006-01-06 12:37:50");
|
||||||
|
|
||||||
|
select * from t1 r1
|
||||||
|
where (r1.retailerID,(r1.changed)) in
|
||||||
|
(SELECT r2.retailerId,(max(changed)) from t1 r2
|
||||||
|
group by r2.retailerId);
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -976,18 +976,18 @@ Item_in_subselect::row_value_transformer(JOIN *join)
|
|||||||
DBUG_RETURN(RES_ERROR);
|
DBUG_RETURN(RES_ERROR);
|
||||||
Item *item_eq=
|
Item *item_eq=
|
||||||
new Item_func_eq(new
|
new Item_func_eq(new
|
||||||
Item_direct_ref((*optimizer->get_cache())->
|
Item_ref((*optimizer->get_cache())->
|
||||||
addr(i),
|
addr(i),
|
||||||
(char *)"<no matter>",
|
(char *)"<no matter>",
|
||||||
(char *)in_left_expr_name),
|
(char *)in_left_expr_name),
|
||||||
new
|
new
|
||||||
Item_direct_ref(select_lex->ref_pointer_array + i,
|
Item_ref(select_lex->ref_pointer_array + i,
|
||||||
(char *)"<no matter>",
|
(char *)"<no matter>",
|
||||||
(char *)"<list ref>")
|
(char *)"<list ref>")
|
||||||
);
|
);
|
||||||
Item *item_isnull=
|
Item *item_isnull=
|
||||||
new Item_func_isnull(new
|
new Item_func_isnull(new
|
||||||
Item_direct_ref( select_lex->
|
Item_ref( select_lex->
|
||||||
ref_pointer_array+i,
|
ref_pointer_array+i,
|
||||||
(char *)"<no matter>",
|
(char *)"<no matter>",
|
||||||
(char *)"<list ref>")
|
(char *)"<list ref>")
|
||||||
@ -1000,7 +1000,7 @@ Item_in_subselect::row_value_transformer(JOIN *join)
|
|||||||
new
|
new
|
||||||
Item_is_not_null_test(this,
|
Item_is_not_null_test(this,
|
||||||
new
|
new
|
||||||
Item_direct_ref(select_lex->
|
Item_ref(select_lex->
|
||||||
ref_pointer_array + i,
|
ref_pointer_array + i,
|
||||||
(char *)"<no matter>",
|
(char *)"<no matter>",
|
||||||
(char *)"<list ref>")
|
(char *)"<list ref>")
|
||||||
@ -1057,7 +1057,7 @@ Item_in_subselect::row_value_transformer(JOIN *join)
|
|||||||
new
|
new
|
||||||
Item_is_not_null_test(this,
|
Item_is_not_null_test(this,
|
||||||
new
|
new
|
||||||
Item_direct_ref(select_lex->
|
Item_ref(select_lex->
|
||||||
ref_pointer_array + i,
|
ref_pointer_array + i,
|
||||||
(char *)"<no matter>",
|
(char *)"<no matter>",
|
||||||
(char *)"<list ref>")
|
(char *)"<list ref>")
|
||||||
|
@ -86,7 +86,7 @@ public:
|
|||||||
|
|
||||||
QUICK_SELECT(THD *thd, TABLE *table,uint index_arg,bool no_alloc=0);
|
QUICK_SELECT(THD *thd, TABLE *table,uint index_arg,bool no_alloc=0);
|
||||||
virtual ~QUICK_SELECT();
|
virtual ~QUICK_SELECT();
|
||||||
void reset(void) { next=0; it.rewind(); }
|
void reset(void) { next=0; it.rewind(); range= NULL;}
|
||||||
int init()
|
int init()
|
||||||
{
|
{
|
||||||
key_part_info= head->key_info[index].key_part;
|
key_part_info= head->key_info[index].key_part;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user