From 4277c173a9815b2c2f9a53039100ad86406003e7 Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 29 Mar 2018 14:16:35 +0300 Subject: [PATCH] MDEV-15149 Assert upon concurrent creating / querying sequences MDEV-15117 Server crashes in in open_and_process_table or ASAN heap-use-after-free in is_temporary_table upon creating/flushing sequences. Problem was that sequence_insert closed and reopened the like table without proper locking. Fixed by ensuring that the like table is not reopened in sequence_insert --- .../sql_sequence/concurrent_create.result | 9 +++++++++ .../suite/sql_sequence/concurrent_create.test | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/mysql-test/suite/sql_sequence/concurrent_create.result b/mysql-test/suite/sql_sequence/concurrent_create.result index 5c9ef71d4fe..7e68195f7e0 100644 --- a/mysql-test/suite/sql_sequence/concurrent_create.result +++ b/mysql-test/suite/sql_sequence/concurrent_create.result @@ -22,3 +22,12 @@ select * from s2; next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count 1 1 9223372036854775806 1 1 1000 0 0 DROP SEQUENCE s1, s2; +CREATE SEQUENCE s1 ENGINE=InnoDB; +connect con1,localhost,root,,test; +CREATE TABLE s2 LIKE s1;; +connection default; +FLUSH TABLES; +connection con1; +disconnect con1; +connection default; +DROP TABLE s1,s2; diff --git a/mysql-test/suite/sql_sequence/concurrent_create.test b/mysql-test/suite/sql_sequence/concurrent_create.test index 699214a241f..d6a57ff7d50 100644 --- a/mysql-test/suite/sql_sequence/concurrent_create.test +++ b/mysql-test/suite/sql_sequence/concurrent_create.test @@ -38,3 +38,21 @@ execute stmt; select * from s2; DROP SEQUENCE s1, s2; +# +# MDEV-15117 Server crashes in in open_and_process_table or ASAN +# heap-use-after-free in is_temporary_table upon creating/flushing sequences +# + +CREATE SEQUENCE s1 ENGINE=InnoDB; +--connect (con1,localhost,root,,test) +--send CREATE TABLE s2 LIKE s1; +--connection default +FLUSH TABLES; + +# Cleanup +--connection con1 +--reap +--disconnect con1 +--connection default + +DROP TABLE s1,s2;