From 1d7b4c268941ec1facef1b82adbff329c08c464d Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 5 Apr 2018 13:50:12 +0300 Subject: MDEV-15738 Server crashes in my_strcasecmp_utf8 on query from I_S with UNION executed as PS Problem was the Item_field::Item_field(THD*, Field*) had old code that put a null pointer in orig_field_names. Now, when we have proper re-prepare if table definition changes, this is not needed anymore. --- mysql-test/main/prepare.test | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 mysql-test/main/prepare.test (limited to 'mysql-test/main/prepare.test') diff --git a/mysql-test/main/prepare.test b/mysql-test/main/prepare.test new file mode 100644 index 00000000000..eaab376a5a2 --- /dev/null +++ b/mysql-test/main/prepare.test @@ -0,0 +1,42 @@ +# +# MDEV-15738 Server crashes in my_strcasecmp_utf8 on query from I_S with UNION +# executed as PS +# + +PREPARE stmt1 FROM " +SELECT table_name FROM information_schema.tables +WHERE table_name = 't1_first' +UNION ALL +SELECT table_name FROM information_schema.tables +WHERE table_name = 't1_second'"; +execute stmt1; +execute stmt1; + +create or replace table t1 (a int primary key, table_name char(40)); +insert into t1 values(1,"t1_first"); +insert into t1 values(2,"t1_second"); + +PREPARE stmt2 FROM " +SELECT table_name FROM t1 +WHERE table_name = 't1_first' +UNION ALL +SELECT table_name FROM t1 +WHERE table_name = 't1_second'"; + +execute stmt2; +execute stmt2; +flush tables; +execute stmt2; +alter table t1 add column b int; +execute stmt2; +execute stmt2; +drop table t1; +--error ER_NO_SUCH_TABLE +execute stmt2; +create or replace table t1 (a int primary key, table_name char(40)); +insert into t1 values(1,"t1_first"); +execute stmt2; + +deallocate prepare stmt1; +deallocate prepare stmt2; +drop table t1; -- cgit v1.2.1