mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
5.1-bugteam->5.5-merge
This commit is contained in:
@ -126,3 +126,19 @@ WHERE
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#50402 Optimizer producing wrong results when using Index Merge on InnoDB
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (f1 INT, PRIMARY KEY (f1));
|
||||||
|
INSERT INTO t1 VALUES (2);
|
||||||
|
CREATE TABLE t2 (f1 INT, f2 INT, f3 char(1),
|
||||||
|
PRIMARY KEY (f1), KEY (f2), KEY (f3) );
|
||||||
|
INSERT INTO t2 VALUES (1, 1, 'h'), (2, 3, 'h'), (3, 2, ''), (4, 2, '');
|
||||||
|
|
||||||
|
SELECT t1.f1 FROM t1
|
||||||
|
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||||
|
|
||||||
|
EXPLAIN SELECT t1.f1 FROM t1
|
||||||
|
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -255,3 +255,21 @@ WHERE
|
|||||||
`RUNID`= '' AND `SUBMITNR`= '' AND `ORDERNR`='' AND `PROGRAMM`='' AND
|
`RUNID`= '' AND `SUBMITNR`= '' AND `ORDERNR`='' AND `PROGRAMM`='' AND
|
||||||
`TESTID`='' AND `UCCHECK`='';
|
`TESTID`='' AND `UCCHECK`='';
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#50402 Optimizer producing wrong results when using Index Merge on InnoDB
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INT, PRIMARY KEY (f1));
|
||||||
|
INSERT INTO t1 VALUES (2);
|
||||||
|
CREATE TABLE t2 (f1 INT, f2 INT, f3 char(1),
|
||||||
|
PRIMARY KEY (f1), KEY (f2), KEY (f3) );
|
||||||
|
INSERT INTO t2 VALUES (1, 1, 'h'), (2, 3, 'h'), (3, 2, ''), (4, 2, '');
|
||||||
|
SELECT t1.f1 FROM t1
|
||||||
|
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||||
|
f1
|
||||||
|
2
|
||||||
|
EXPLAIN SELECT t1.f1 FROM t1
|
||||||
|
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||||
|
2 DEPENDENT SUBQUERY t2 index_merge f2,f3 f3,f2 2,5 NULL 1 Using intersect(f3,f2); Using where; Using index
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -1414,6 +1414,24 @@ WHERE
|
|||||||
`TESTID`='' AND `UCCHECK`='';
|
`TESTID`='' AND `UCCHECK`='';
|
||||||
drop table t1;
|
drop table t1;
|
||||||
#
|
#
|
||||||
|
# Bug#50402 Optimizer producing wrong results when using Index Merge on InnoDB
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INT, PRIMARY KEY (f1));
|
||||||
|
INSERT INTO t1 VALUES (2);
|
||||||
|
CREATE TABLE t2 (f1 INT, f2 INT, f3 char(1),
|
||||||
|
PRIMARY KEY (f1), KEY (f2), KEY (f3) );
|
||||||
|
INSERT INTO t2 VALUES (1, 1, 'h'), (2, 3, 'h'), (3, 2, ''), (4, 2, '');
|
||||||
|
SELECT t1.f1 FROM t1
|
||||||
|
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||||
|
f1
|
||||||
|
2
|
||||||
|
EXPLAIN SELECT t1.f1 FROM t1
|
||||||
|
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system PRIMARY NULL NULL NULL 1
|
||||||
|
2 DEPENDENT SUBQUERY t2 ref f2,f3 f2 5 1 Using where
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
# Generic @@optimizer_switch tests (move those into a separate file if
|
# Generic @@optimizer_switch tests (move those into a separate file if
|
||||||
# we get another @@optimizer_switch user)
|
# we get another @@optimizer_switch user)
|
||||||
#
|
#
|
||||||
|
@ -8550,9 +8550,14 @@ int QUICK_RANGE_SELECT::reset()
|
|||||||
in_range= FALSE;
|
in_range= FALSE;
|
||||||
cur_range= (QUICK_RANGE**) ranges.buffer;
|
cur_range= (QUICK_RANGE**) ranges.buffer;
|
||||||
|
|
||||||
if (file->inited == handler::NONE && (error= file->ha_index_init(index,1)))
|
if (file->inited == handler::NONE)
|
||||||
DBUG_RETURN(error);
|
{
|
||||||
|
if (in_ror_merged_scan)
|
||||||
|
head->column_bitmaps_set_no_signal(&column_bitmap, &column_bitmap);
|
||||||
|
if ((error= file->ha_index_init(index,1)))
|
||||||
|
DBUG_RETURN(error);
|
||||||
|
}
|
||||||
|
|
||||||
/* Do not allocate the buffers twice. */
|
/* Do not allocate the buffers twice. */
|
||||||
if (multi_range_length)
|
if (multi_range_length)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user