mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-3804:
MySQL fix for bug#11765413 removed (we have better and more general fix for the problem). Test suite added.
This commit is contained in:
@ -777,3 +777,14 @@ execute stmt1 ;
|
|||||||
prepare stmt1 from ' select * from t5 ' ;
|
prepare stmt1 from ' select * from t5 ' ;
|
||||||
execute stmt1 ;
|
execute stmt1 ;
|
||||||
drop table t1, t5, t9;
|
drop table t1, t5, t9;
|
||||||
|
#
|
||||||
|
# testcase for bug#11765413 - Crash with dependent subquery and
|
||||||
|
# prepared statement
|
||||||
|
create table t1 (c1 int);
|
||||||
|
insert into t1 values (1);
|
||||||
|
prepare stmt1 from "select 1 from t1 where 1=(select 1 from t1 having c1)";
|
||||||
|
execute stmt1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop prepare stmt1;
|
||||||
|
drop table t1;
|
||||||
|
@ -827,6 +827,16 @@ execute stmt1 ;
|
|||||||
|
|
||||||
drop table t1, t5, t9;
|
drop table t1, t5, t9;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # testcase for bug#11765413 - Crash with dependent subquery and
|
||||||
|
--echo # prepared statement
|
||||||
|
create table t1 (c1 int);
|
||||||
|
insert into t1 values (1);
|
||||||
|
prepare stmt1 from "select 1 from t1 where 1=(select 1 from t1 having c1)";
|
||||||
|
execute stmt1;
|
||||||
|
drop prepare stmt1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
##### RULES OF THUMB TO PRESERVE THE SYSTEMATICS OF THE PS TEST CASES #####
|
##### RULES OF THUMB TO PRESERVE THE SYSTEMATICS OF THE PS TEST CASES #####
|
||||||
#
|
#
|
||||||
# 0. You don't have the time to
|
# 0. You don't have the time to
|
||||||
|
@ -6839,7 +6839,7 @@ bool Item_ref::fix_fields(THD *thd, Item **reference)
|
|||||||
if (from_field != not_found_field)
|
if (from_field != not_found_field)
|
||||||
{
|
{
|
||||||
Item_field* fld;
|
Item_field* fld;
|
||||||
if (!(fld= new Item_field(thd, last_checked_context, from_field)))
|
if (!(fld= new Item_field(from_field)))
|
||||||
goto error;
|
goto error;
|
||||||
thd->change_item_tree(reference, fld);
|
thd->change_item_tree(reference, fld);
|
||||||
mark_as_dependent(thd, last_checked_context->select_lex,
|
mark_as_dependent(thd, last_checked_context->select_lex,
|
||||||
|
@ -718,8 +718,6 @@ JOIN::prepare(Item ***rref_pointer_array,
|
|||||||
|
|
||||||
if (having)
|
if (having)
|
||||||
{
|
{
|
||||||
Query_arena backup, *arena;
|
|
||||||
arena= thd->activate_stmt_arena_if_needed(&backup);
|
|
||||||
nesting_map save_allow_sum_func= thd->lex->allow_sum_func;
|
nesting_map save_allow_sum_func= thd->lex->allow_sum_func;
|
||||||
thd->where="having clause";
|
thd->where="having clause";
|
||||||
thd->lex->allow_sum_func|= 1 << select_lex_arg->nest_level;
|
thd->lex->allow_sum_func|= 1 << select_lex_arg->nest_level;
|
||||||
@ -735,9 +733,6 @@ JOIN::prepare(Item ***rref_pointer_array,
|
|||||||
(having->fix_fields(thd, &having) ||
|
(having->fix_fields(thd, &having) ||
|
||||||
having->check_cols(1)));
|
having->check_cols(1)));
|
||||||
select_lex->having_fix_field= 0;
|
select_lex->having_fix_field= 0;
|
||||||
select_lex->having= having;
|
|
||||||
if (arena)
|
|
||||||
thd->restore_active_arena(arena, &backup);
|
|
||||||
|
|
||||||
if (having_fix_rc || thd->is_error())
|
if (having_fix_rc || thd->is_error())
|
||||||
DBUG_RETURN(-1); /* purecov: inspected */
|
DBUG_RETURN(-1); /* purecov: inspected */
|
||||||
|
Reference in New Issue
Block a user