mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge
This commit is contained in:
@ -1848,6 +1848,19 @@ a b
|
||||
7 5
|
||||
3 3
|
||||
drop table t1,t2;
|
||||
#
|
||||
# BUG#933407: Valgrind warnings in mark_as_null_row with materialization+semijoin, STRAIGHT_JOIN, impossible WHERE
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (0),(8);
|
||||
SELECT STRAIGHT_JOIN MIN(a) FROM t1
|
||||
WHERE a IN (
|
||||
SELECT a FROM t1
|
||||
WHERE 'condition'='impossible'
|
||||
);
|
||||
MIN(a)
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
# This must be at the end:
|
||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||
set join_cache_level=@save_join_cache_level;
|
||||
|
@ -1885,6 +1885,19 @@ a b
|
||||
7 5
|
||||
3 3
|
||||
drop table t1,t2;
|
||||
#
|
||||
# BUG#933407: Valgrind warnings in mark_as_null_row with materialization+semijoin, STRAIGHT_JOIN, impossible WHERE
|
||||
#
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (0),(8);
|
||||
SELECT STRAIGHT_JOIN MIN(a) FROM t1
|
||||
WHERE a IN (
|
||||
SELECT a FROM t1
|
||||
WHERE 'condition'='impossible'
|
||||
);
|
||||
MIN(a)
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
# This must be at the end:
|
||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||
set join_cache_level=@save_join_cache_level;
|
||||
|
@ -1545,6 +1545,19 @@ select * from t1 where t1.a in (select a from t2 where t2.a=7 or t2.b<=1);
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#933407: Valgrind warnings in mark_as_null_row with materialization+semijoin, STRAIGHT_JOIN, impossible WHERE
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (0),(8);
|
||||
|
||||
SELECT STRAIGHT_JOIN MIN(a) FROM t1
|
||||
WHERE a IN (
|
||||
SELECT a FROM t1
|
||||
WHERE 'condition'='impossible'
|
||||
);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # This must be at the end:
|
||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||
|
@ -10442,10 +10442,22 @@ return_zero_rows(JOIN *join, select_result *result, List<TABLE_LIST> &tables,
|
||||
|
||||
if (send_row)
|
||||
{
|
||||
/*
|
||||
Set all tables to have NULL row. This is needed as we will be evaluating
|
||||
HAVING condition.
|
||||
*/
|
||||
List_iterator<TABLE_LIST> ti(tables);
|
||||
TABLE_LIST *table;
|
||||
while ((table= ti++))
|
||||
{
|
||||
/*
|
||||
Don't touch semi-join materialization tables, as the above join_free()
|
||||
call has freed them (and HAVING clause can't have references to them
|
||||
anyway).
|
||||
*/
|
||||
if (!table->is_jtbm())
|
||||
mark_as_null_row(table->table); // All fields are NULL
|
||||
}
|
||||
if (having &&
|
||||
!having->walk(&Item::clear_sum_processor, FALSE, NULL) &&
|
||||
having->val_int() == 0)
|
||||
|
Reference in New Issue
Block a user