mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Fix LP BUG#702345
Analysis:
Close to its end JOIN::optimize() assigns having to tmp_having, and
sets the having clause to NULL:
tmp_having= having;
if (select_options & SELECT_DESCRIBE)
{
error= 0;
DBUG_RETURN(0);
}
having= 0;
At the same time, this query detects an empty result set, and calls
return_zero_rows(), which checks the HAVING clause as follows:
if (having && having->val_int() == 0)
send_row=0;
However having has been already set to NULL, so return_zero_rows
doesn't check the having clause, hence the wrong result.
Solution:
Check join->tmp_having in addition to join->having.
There is no additional test case, because the failure was in
the current regression test.
This commit is contained in:
@@ -1907,7 +1907,7 @@ JOIN::exec()
|
||||
send_row_on_empty_set(),
|
||||
select_options,
|
||||
zero_result_cause,
|
||||
having);
|
||||
having ? having : tmp_having);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user