mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Backport of:
----------------------------------------------------------- revno: 2630.2.4 committer: Konstantin Osipov <konstantin@mysql.com> branch nick: mysql-6.0-runtime timestamp: Fri 2008-05-23 02:42:32 +0400 message: Bug#27430 "Crash in subquery code when in PS and table DDL changed after PREPARE" Add a test case for the situation with small TDC and many merge children. from 6.0-codebase.
This commit is contained in:
@ -2220,3 +2220,39 @@ tr1 CREATE DEFINER=`root`@`localhost` TRIGGER tr1 AFTER INSERT ON t3 FOR EACH R
|
|||||||
DROP TRIGGER tr1;
|
DROP TRIGGER tr1;
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
#
|
||||||
|
# An additional test case for Bug#27430 Crash in subquery code
|
||||||
|
# when in PS and table DDL changed after PREPARE
|
||||||
|
#
|
||||||
|
# Test merge table with too many merge children.
|
||||||
|
#
|
||||||
|
drop table if exists t_parent;
|
||||||
|
set @save_table_definition_cache=@@global.table_definition_cache;
|
||||||
|
#
|
||||||
|
# Set @@global.table_definition_cache to minimum
|
||||||
|
#
|
||||||
|
set @@global.table_definition_cache=400;
|
||||||
|
set @a=null;
|
||||||
|
#
|
||||||
|
# Create 400 merge children
|
||||||
|
#
|
||||||
|
set @a=concat("create table t_parent (a int) union(", @a,
|
||||||
|
") insert_method=first engine=mrg_myisam");
|
||||||
|
prepare stmt from @a;
|
||||||
|
execute stmt;
|
||||||
|
prepare stmt from "select * from t_parent";
|
||||||
|
execute stmt;
|
||||||
|
ERROR HY000: Prepared statement needs to be re-prepared
|
||||||
|
execute stmt;
|
||||||
|
ERROR HY000: Prepared statement needs to be re-prepared
|
||||||
|
execute stmt;
|
||||||
|
ERROR HY000: Prepared statement needs to be re-prepared
|
||||||
|
deallocate prepare stmt;
|
||||||
|
#
|
||||||
|
# Create merge parent
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Cleanup
|
||||||
|
#
|
||||||
|
drop table t_parent;
|
||||||
|
set @@global.table_definition_cache=@save_table_definition_cache;
|
||||||
|
@ -1634,3 +1634,63 @@ DROP TRIGGER tr1;
|
|||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # An additional test case for Bug#27430 Crash in subquery code
|
||||||
|
--echo # when in PS and table DDL changed after PREPARE
|
||||||
|
--echo #
|
||||||
|
--echo # Test merge table with too many merge children.
|
||||||
|
--echo #
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t_parent;
|
||||||
|
--enable_warnings
|
||||||
|
set @save_table_definition_cache=@@global.table_definition_cache;
|
||||||
|
--echo #
|
||||||
|
--echo # Set @@global.table_definition_cache to minimum
|
||||||
|
--echo #
|
||||||
|
set @@global.table_definition_cache=400;
|
||||||
|
set @a=null;
|
||||||
|
let $1 = 400;
|
||||||
|
--echo #
|
||||||
|
--echo # Create 400 merge children
|
||||||
|
--echo #
|
||||||
|
--disable_query_log
|
||||||
|
while ($1)
|
||||||
|
{
|
||||||
|
--disable_warnings
|
||||||
|
eval drop table if exists t$1;
|
||||||
|
--enable_warnings
|
||||||
|
eval create table t$1 (a int) engine=myisam;
|
||||||
|
eval set @a=ifnull(concat(@a, ", ", "t$1"), "t$1");
|
||||||
|
dec $1;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
set @a=concat("create table t_parent (a int) union(", @a,
|
||||||
|
") insert_method=first engine=mrg_myisam");
|
||||||
|
prepare stmt from @a;
|
||||||
|
execute stmt;
|
||||||
|
prepare stmt from "select * from t_parent";
|
||||||
|
--error ER_NEED_REPREPARE
|
||||||
|
execute stmt;
|
||||||
|
--error ER_NEED_REPREPARE
|
||||||
|
execute stmt;
|
||||||
|
--error ER_NEED_REPREPARE
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
--echo #
|
||||||
|
--echo # Create merge parent
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Cleanup
|
||||||
|
--echo #
|
||||||
|
let $1 = 400;
|
||||||
|
--disable_query_log
|
||||||
|
while ($1)
|
||||||
|
{
|
||||||
|
eval drop table t$1;
|
||||||
|
dec $1;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
drop table t_parent;
|
||||||
|
set @@global.table_definition_cache=@save_table_definition_cache;
|
||||||
|
Reference in New Issue
Block a user