From 560b9895d413bdfedda0a0ca871a635858990c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 6 Feb 2018 17:09:26 +0200 Subject: [PATCH] MDEV-15115 Assertion failure in CREATE SEQUENCE...ROW_FORMAT=REDUNDANT dict_tf_is_valid(): Allow no-rollback tables in ROW_FORMAT=REDUNDANT. --- mysql-test/suite/sql_sequence/create.result | 7 +++++++ mysql-test/suite/sql_sequence/create.test | 8 ++++++++ storage/innobase/include/dict0dict.ic | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/sql_sequence/create.result b/mysql-test/suite/sql_sequence/create.result index 20d16822575..6af43a3faa4 100644 --- a/mysql-test/suite/sql_sequence/create.result +++ b/mysql-test/suite/sql_sequence/create.result @@ -634,3 +634,10 @@ create temporary table s (i int); drop temporary sequence s; ERROR 42S02: Unknown SEQUENCE: 'test.s' drop table s; +# +# MDEV-15115 Assertion failure in CREATE SEQUENCE...ROW_FORMAT=REDUNDANT +# +CREATE SEQUENCE seq1 ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +DROP SEQUENCE seq1; +CREATE TEMPORARY SEQUENCE seq1 ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +DROP TEMPORARY SEQUENCE seq1; diff --git a/mysql-test/suite/sql_sequence/create.test b/mysql-test/suite/sql_sequence/create.test index 91411bebfde..65c0641eab9 100644 --- a/mysql-test/suite/sql_sequence/create.test +++ b/mysql-test/suite/sql_sequence/create.test @@ -450,3 +450,11 @@ create temporary table s (i int); --error ER_UNKNOWN_SEQUENCES drop temporary sequence s; drop table s; + +--echo # +--echo # MDEV-15115 Assertion failure in CREATE SEQUENCE...ROW_FORMAT=REDUNDANT +--echo # +CREATE SEQUENCE seq1 ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +DROP SEQUENCE seq1; +CREATE TEMPORARY SEQUENCE seq1 ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +DROP TEMPORARY SEQUENCE seq1; diff --git a/storage/innobase/include/dict0dict.ic b/storage/innobase/include/dict0dict.ic index dde3e2bfac7..4efb0971209 100644 --- a/storage/innobase/include/dict0dict.ic +++ b/storage/innobase/include/dict0dict.ic @@ -667,7 +667,7 @@ dict_tf_is_valid( bit. For ROW_FORMAT=REDUNDANT, only the DATA_DIR flag (which we cleared above) can be set. If any other flags are set, the flags are invalid. */ - return(flags == 0); + return(flags == 0 || flags == DICT_TF_MASK_NO_ROLLBACK); } return(dict_tf_is_valid_not_redundant(flags));