mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge.
This commit is contained in:
@ -2785,4 +2785,26 @@ DROP TABLE IF EXISTS t1, t2;
|
||||
CREATE TABLE t1 (a INT, INDEX(a)) engine=innodb;
|
||||
ALTER TABLE t1 RENAME TO t2, DISABLE KEYS;
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
#
|
||||
# Bug#702322: HAVING with two ANDed predicates + ORDER BY
|
||||
#
|
||||
CREATE TABLE t1 (pk int PRIMARY KEY, a int, KEY (a)) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a int, KEY (a)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES
|
||||
(18,0),(9,10),(8,11),(2,15),(7,19),(1,20);
|
||||
SET SESSION join_cache_level = 0;
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.pk = t2.a
|
||||
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
||||
ORDER BY t1.a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 Using where; Using filesort
|
||||
1 SIMPLE t2 ref a a 5 test.t1.pk 1 Using index
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.pk = t2.a
|
||||
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
||||
ORDER BY t1.a;
|
||||
a
|
||||
10
|
||||
19
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.3 tests
|
||||
|
@ -984,6 +984,7 @@ DROP TABLE t1, t2;
|
||||
--echo # Test for bug #56619 - Assertion failed during
|
||||
--echo # ALTER TABLE RENAME, DISABLE KEYS
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
--enable_warnings
|
||||
@ -993,4 +994,26 @@ ALTER TABLE t1 RENAME TO t2, DISABLE KEYS;
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
--echo # Bug#702322: HAVING with two ANDed predicates + ORDER BY
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (pk int PRIMARY KEY, a int, KEY (a)) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a int, KEY (a)) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(18,0),(9,10),(8,11),(2,15),(7,19),(1,20);
|
||||
|
||||
SET SESSION join_cache_level = 0;
|
||||
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.pk = t2.a
|
||||
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
||||
ORDER BY t1.a;
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.pk = t2.a
|
||||
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
||||
ORDER BY t1.a;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.3 tests
|
||||
|
@ -2315,16 +2315,23 @@ JOIN::exec()
|
||||
new Item_cond_and(curr_table->select->cond,
|
||||
sort_table_cond)))
|
||||
DBUG_VOID_RETURN;
|
||||
curr_table->select->cond->fix_fields(thd, 0);
|
||||
}
|
||||
if (curr_table->pre_idx_push_select_cond)
|
||||
{
|
||||
if (sort_table_cond->type() == Item::COND_ITEM &&
|
||||
sort_table_cond != curr_table->select->cond)
|
||||
sort_table_cond= sort_table_cond->copy_andor_structure(thd);
|
||||
if (!(curr_table->pre_idx_push_select_cond=
|
||||
new Item_cond_and(curr_table->pre_idx_push_select_cond,
|
||||
sort_table_cond)))
|
||||
DBUG_VOID_RETURN;
|
||||
curr_table->pre_idx_push_select_cond->fix_fields(thd, 0);
|
||||
}
|
||||
if (curr_table->select->cond && !curr_table->select->cond->fixed)
|
||||
curr_table->select->cond->fix_fields(thd, 0);
|
||||
if (curr_table->pre_idx_push_select_cond &&
|
||||
!curr_table->pre_idx_push_select_cond->fixed)
|
||||
curr_table->pre_idx_push_select_cond->fix_fields(thd, 0);
|
||||
|
||||
curr_table->set_select_cond(curr_table->select->cond, __LINE__);
|
||||
curr_table->select_cond->top_level_item();
|
||||
DBUG_EXECUTE("where",print_where(curr_table->select->cond,
|
||||
|
Reference in New Issue
Block a user