merge
This commit is contained in:
commit
f2e96ba17b
@ -1427,4 +1427,62 @@ WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
|||||||
GROUP BY t2.f1, t2.f2;
|
GROUP BY t2.f1, t2.f2;
|
||||||
f1 f1 f2
|
f1 f1 f2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
# BUG#12567331 - INFINITE LOOP WHEN RESOLVING AN ALIASED COLUMN
|
||||||
|
# USED IN GROUP BY
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
col_varchar_1024_latin1_key varchar(1024),
|
||||||
|
col_varchar_10_latin1 varchar(10),
|
||||||
|
col_int int(11),
|
||||||
|
pk int(11)
|
||||||
|
);
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
col_int_key int(11),
|
||||||
|
col_int int(11),
|
||||||
|
pk int(11)
|
||||||
|
);
|
||||||
|
PREPARE prep_stmt_9846 FROM '
|
||||||
|
SELECT alias1.pk AS field1 FROM
|
||||||
|
t1 AS alias1
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t2 AS alias2
|
||||||
|
RIGHT JOIN
|
||||||
|
(
|
||||||
|
t2 AS alias3
|
||||||
|
JOIN t1 AS alias4
|
||||||
|
ON 1
|
||||||
|
)
|
||||||
|
ON 1
|
||||||
|
)
|
||||||
|
ON 1
|
||||||
|
GROUP BY field1';
|
||||||
|
execute prep_stmt_9846;
|
||||||
|
field1
|
||||||
|
execute prep_stmt_9846;
|
||||||
|
field1
|
||||||
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# Bug #11765810 58813: SERVER THREAD HANGS WHEN JOIN + WHERE + GROUP BY
|
||||||
|
# IS EXECUTED TWICE FROM P
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT ) ENGINE = MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
PREPARE prep_stmt FROM '
|
||||||
|
SELECT 1 AS f FROM t1
|
||||||
|
LEFT JOIN t1 t2
|
||||||
|
RIGHT JOIN t1 t3
|
||||||
|
JOIN t1 t4
|
||||||
|
ON 1
|
||||||
|
ON 1
|
||||||
|
ON 1
|
||||||
|
GROUP BY f';
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
f
|
||||||
|
1
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
f
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1010,4 +1010,62 @@ GROUP BY t2.f1, t2.f2;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # BUG#12567331 - INFINITE LOOP WHEN RESOLVING AN ALIASED COLUMN
|
||||||
|
--echo # USED IN GROUP BY
|
||||||
|
--echo
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
col_varchar_1024_latin1_key varchar(1024),
|
||||||
|
col_varchar_10_latin1 varchar(10),
|
||||||
|
col_int int(11),
|
||||||
|
pk int(11)
|
||||||
|
);
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
col_int_key int(11),
|
||||||
|
col_int int(11),
|
||||||
|
pk int(11)
|
||||||
|
);
|
||||||
|
|
||||||
|
PREPARE prep_stmt_9846 FROM '
|
||||||
|
SELECT alias1.pk AS field1 FROM
|
||||||
|
t1 AS alias1
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t2 AS alias2
|
||||||
|
RIGHT JOIN
|
||||||
|
(
|
||||||
|
t2 AS alias3
|
||||||
|
JOIN t1 AS alias4
|
||||||
|
ON 1
|
||||||
|
)
|
||||||
|
ON 1
|
||||||
|
)
|
||||||
|
ON 1
|
||||||
|
GROUP BY field1';
|
||||||
|
execute prep_stmt_9846;
|
||||||
|
execute prep_stmt_9846;
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #11765810 58813: SERVER THREAD HANGS WHEN JOIN + WHERE + GROUP BY
|
||||||
|
--echo # IS EXECUTED TWICE FROM P
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 ( a INT ) ENGINE = MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
PREPARE prep_stmt FROM '
|
||||||
|
SELECT 1 AS f FROM t1
|
||||||
|
LEFT JOIN t1 t2
|
||||||
|
RIGHT JOIN t1 t3
|
||||||
|
JOIN t1 t4
|
||||||
|
ON 1
|
||||||
|
ON 1
|
||||||
|
ON 1
|
||||||
|
GROUP BY f';
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -8947,11 +8947,9 @@ simplify_joins(JOIN *join, List<TABLE_LIST> *join_list, COND *conds, bool top)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Flatten nested joins that can be flattened. */
|
/* Flatten nested joins that can be flattened. */
|
||||||
TABLE_LIST *right_neighbor= NULL;
|
|
||||||
li.rewind();
|
li.rewind();
|
||||||
while ((table= li++))
|
while ((table= li++))
|
||||||
{
|
{
|
||||||
bool fix_name_res= FALSE;
|
|
||||||
nested_join= table->nested_join;
|
nested_join= table->nested_join;
|
||||||
if (nested_join && !table->on_expr)
|
if (nested_join && !table->on_expr)
|
||||||
{
|
{
|
||||||
@ -8963,15 +8961,7 @@ simplify_joins(JOIN *join, List<TABLE_LIST> *join_list, COND *conds, bool top)
|
|||||||
tbl->join_list= table->join_list;
|
tbl->join_list= table->join_list;
|
||||||
}
|
}
|
||||||
li.replace(nested_join->join_list);
|
li.replace(nested_join->join_list);
|
||||||
/* Need to update the name resolution table chain when flattening joins */
|
|
||||||
fix_name_res= TRUE;
|
|
||||||
table= *li.ref();
|
|
||||||
}
|
}
|
||||||
if (fix_name_res)
|
|
||||||
table->next_name_resolution_table= right_neighbor ?
|
|
||||||
right_neighbor->first_leaf_for_name_resolution() :
|
|
||||||
NULL;
|
|
||||||
right_neighbor= table;
|
|
||||||
}
|
}
|
||||||
DBUG_RETURN(conds);
|
DBUG_RETURN(conds);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user