From c6a890a795595a2049a42a7c7039e03e674b13a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Tue, 4 Jan 2022 14:18:34 +0200 Subject: [PATCH] MDEV-19353 : Alter Sequence do not replicate to another nodes with in Galera Cluster Galera replication of new DDL-case was missing --- .../suite/galera/r/galera_sequences.result | 27 +++++++++++++++++++ .../suite/galera/t/galera_sequences.test | 24 +++++++++++++++++ sql/sql_sequence.cc | 7 +++++ 3 files changed, 58 insertions(+) create mode 100644 mysql-test/suite/galera/r/galera_sequences.result create mode 100644 mysql-test/suite/galera/t/galera_sequences.test diff --git a/mysql-test/suite/galera/r/galera_sequences.result b/mysql-test/suite/galera/r/galera_sequences.result new file mode 100644 index 00000000000..e7edc905094 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sequences.result @@ -0,0 +1,27 @@ +connection node_2; +connection node_1; +connection node_1; +CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 1000000 increment by 0 cache 1000 nocycle ENGINE=InnoDB; +SHOW CREATE SEQUENCE seq; +Table Create Table +seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 1000000 increment by 0 cache 1000 nocycle ENGINE=InnoDB +connection node_2; +SHOW CREATE SEQUENCE seq; +Table Create Table +seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 1000000 increment by 0 cache 1000 nocycle ENGINE=InnoDB +connection node_1; +ALTER SEQUENCE seq MAXVALUE = 10000; +SHOW CREATE SEQUENCE seq; +Table Create Table +seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 10000 increment by 0 cache 1000 nocycle ENGINE=InnoDB +connection node_2; +SHOW CREATE SEQUENCE seq; +Table Create Table +seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 10000 increment by 0 cache 1000 nocycle ENGINE=InnoDB +connection node_1; +DROP SEQUENCE seq; +SHOW CREATE SEQUENCE seq; +ERROR 42S02: Table 'test.seq' doesn't exist +connection node_2; +SHOW CREATE SEQUENCE seq; +ERROR 42S02: Table 'test.seq' doesn't exist diff --git a/mysql-test/suite/galera/t/galera_sequences.test b/mysql-test/suite/galera/t/galera_sequences.test new file mode 100644 index 00000000000..e2ecdff49d0 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sequences.test @@ -0,0 +1,24 @@ +--source include/galera_cluster.inc + +--connection node_1 +CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 1000000 increment by 0 cache 1000 nocycle ENGINE=InnoDB; +SHOW CREATE SEQUENCE seq; + +--connection node_2 +SHOW CREATE SEQUENCE seq; + +--connection node_1 +ALTER SEQUENCE seq MAXVALUE = 10000; +SHOW CREATE SEQUENCE seq; + +--connection node_2 +SHOW CREATE SEQUENCE seq; + +--connection node_1 +DROP SEQUENCE seq; +--error ER_NO_SUCH_TABLE +SHOW CREATE SEQUENCE seq; + +--connection node_2 +--error ER_NO_SUCH_TABLE +SHOW CREATE SEQUENCE seq; diff --git a/sql/sql_sequence.cc b/sql/sql_sequence.cc index 83091cd67da..8d1a67eab85 100644 --- a/sql/sql_sequence.cc +++ b/sql/sql_sequence.cc @@ -908,6 +908,13 @@ bool Sql_cmd_alter_sequence::execute(THD *thd) if (check_grant(thd, ALTER_ACL, first_table, FALSE, 1, FALSE)) DBUG_RETURN(TRUE); /* purecov: inspected */ +#ifdef WITH_WSREP + if (WSREP_ON && WSREP(thd) && + wsrep_to_isolation_begin(thd, first_table->db.str, + first_table->table_name.str, + first_table)) + DBUG_RETURN(TRUE); +#endif /* WITH_WSREP */ if (if_exists()) thd->push_internal_handler(&no_such_table_handler); error= open_and_lock_tables(thd, first_table, FALSE, 0);