mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 5.2->5.3
This commit is contained in:
@@ -567,6 +567,27 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
# as that violates the "no interleaving of outer join nests" rule.
|
# as that violates the "no interleaving of outer join nests" rule.
|
||||||
DROP TABLE t1,t2,t3,t4,t5;
|
DROP TABLE t1,t2,t3,t4,t5;
|
||||||
#
|
#
|
||||||
|
# BUG#997747: Assertion `join->best_read < ((double)1.79..5e+308L)'
|
||||||
|
# failed in greedy_search with LEFT JOINs and unique keys
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a1 INT);
|
||||||
|
CREATE TABLE t2 (b1 INT);
|
||||||
|
CREATE TABLE t3 (c1 INT, UNIQUE KEY(c1));
|
||||||
|
CREATE TABLE t4 (d1 INT, UNIQUE KEY(d1));
|
||||||
|
CREATE TABLE t5 (e1 INT);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
INSERT INTO t2 VALUES (2),(3);
|
||||||
|
INSERT INTO t3 VALUES (3),(4);
|
||||||
|
INSERT INTO t4 VALUES (4),(5);
|
||||||
|
INSERT INTO t5 VALUES (5),(6);
|
||||||
|
SELECT a1 FROM t1 LEFT JOIN t2 LEFT JOIN t3 LEFT JOIN t4
|
||||||
|
ON c1 = d1 ON d1 = b1 ON a1 = b1
|
||||||
|
LEFT JOIN t5 ON a1 = e1 ;
|
||||||
|
a1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1,t2,t3,t4,t5;
|
||||||
|
#
|
||||||
# BUG#884184: Wrong result with RIGHT JOIN + derived_merge
|
# BUG#884184: Wrong result with RIGHT JOIN + derived_merge
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int(11), b varchar(1)) ;
|
CREATE TABLE t1 (a int(11), b varchar(1)) ;
|
||||||
|
@@ -499,6 +499,28 @@ WHERE t3.f2 ;
|
|||||||
|
|
||||||
DROP TABLE t1,t2,t3,t4,t5;
|
DROP TABLE t1,t2,t3,t4,t5;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # BUG#997747: Assertion `join->best_read < ((double)1.79..5e+308L)'
|
||||||
|
--echo # failed in greedy_search with LEFT JOINs and unique keys
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a1 INT);
|
||||||
|
CREATE TABLE t2 (b1 INT);
|
||||||
|
CREATE TABLE t3 (c1 INT, UNIQUE KEY(c1));
|
||||||
|
CREATE TABLE t4 (d1 INT, UNIQUE KEY(d1));
|
||||||
|
CREATE TABLE t5 (e1 INT);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
INSERT INTO t2 VALUES (2),(3);
|
||||||
|
INSERT INTO t3 VALUES (3),(4);
|
||||||
|
INSERT INTO t4 VALUES (4),(5);
|
||||||
|
INSERT INTO t5 VALUES (5),(6);
|
||||||
|
|
||||||
|
SELECT a1 FROM t1 LEFT JOIN t2 LEFT JOIN t3 LEFT JOIN t4
|
||||||
|
ON c1 = d1 ON d1 = b1 ON a1 = b1
|
||||||
|
LEFT JOIN t5 ON a1 = e1 ;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2,t3,t4,t5;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # BUG#884184: Wrong result with RIGHT JOIN + derived_merge
|
--echo # BUG#884184: Wrong result with RIGHT JOIN + derived_merge
|
||||||
--echo #
|
--echo #
|
||||||
@@ -517,3 +539,5 @@ EXPLAIN SELECT alias1.* FROM t3 LEFT JOIN v1 as alias1 ON ( t3.a = alias1.b );
|
|||||||
drop view v1;
|
drop view v1;
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -9174,14 +9174,16 @@ static uint reset_nj_counters(JOIN *join, List<TABLE_LIST> *join_list)
|
|||||||
while ((table= li++))
|
while ((table= li++))
|
||||||
{
|
{
|
||||||
NESTED_JOIN *nested_join;
|
NESTED_JOIN *nested_join;
|
||||||
|
bool is_eliminated_nest= FALSE;
|
||||||
if ((nested_join= table->nested_join))
|
if ((nested_join= table->nested_join))
|
||||||
{
|
{
|
||||||
nested_join->counter= 0;
|
nested_join->counter= 0;
|
||||||
//nested_join->n_tables= my_count_bits(nested_join->used_tables &
|
|
||||||
// ~join->eliminated_tables);
|
|
||||||
nested_join->n_tables= reset_nj_counters(join, &nested_join->join_list);
|
nested_join->n_tables= reset_nj_counters(join, &nested_join->join_list);
|
||||||
|
if (!nested_join->n_tables)
|
||||||
|
is_eliminated_nest= TRUE;
|
||||||
}
|
}
|
||||||
if (!table->table || (table->table->map & ~join->eliminated_tables))
|
if ((table->nested_join && !is_eliminated_nest) ||
|
||||||
|
(!table->nested_join && (table->table->map & ~join->eliminated_tables)))
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
DBUG_RETURN(n);
|
DBUG_RETURN(n);
|
||||||
|
Reference in New Issue
Block a user