mirror of
https://github.com/MariaDB/server.git
synced 2025-11-08 00:28:29 +03:00
Merge branch '10.6' into '10.11'
This commit is contained in:
27
mysql-test/suite/galera/r/MDEV-37366.result
Normal file
27
mysql-test/suite/galera/r/MDEV-37366.result
Normal file
@@ -0,0 +1,27 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
SET SESSION binlog_row_image=minimal;
|
||||
CREATE SEQUENCE `seq_test` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 0 cache 1000 nocycle ENGINE=InnoDB;
|
||||
SHOW CREATE TABLE seq_test;
|
||||
Table Create Table
|
||||
seq_test CREATE TABLE `seq_test` (
|
||||
`next_not_cached_value` bigint(21) NOT NULL,
|
||||
`minimum_value` bigint(21) NOT NULL,
|
||||
`maximum_value` bigint(21) NOT NULL,
|
||||
`start_value` bigint(21) NOT NULL COMMENT 'start value when sequences is created or value if RESTART is used',
|
||||
`increment` bigint(21) NOT NULL COMMENT 'increment value',
|
||||
`cache_size` bigint(21) unsigned NOT NULL,
|
||||
`cycle_option` tinyint(1) unsigned NOT NULL COMMENT '0 if no cycles are allowed, 1 if the sequence should begin a new cycle when maximum_value is passed',
|
||||
`cycle_count` bigint(21) NOT NULL COMMENT 'How many cycles have been done'
|
||||
) ENGINE=InnoDB SEQUENCE=1
|
||||
SELECT NEXT VALUE FOR seq_test;
|
||||
NEXT VALUE FOR seq_test
|
||||
1
|
||||
SELECT NEXT VALUE FOR seq_test;
|
||||
NEXT VALUE FOR seq_test
|
||||
3
|
||||
connection node_2;
|
||||
DROP SEQUENCE seq_test;
|
||||
@@ -35,15 +35,6 @@ EXPECT_3
|
||||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||
EXPECT_2
|
||||
2
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`f2` int(11) DEFAULT NULL,
|
||||
`f3` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`f1`),
|
||||
UNIQUE KEY `i1` (`f2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||
EXPECT_1001
|
||||
1001
|
||||
@@ -54,15 +45,6 @@ EXPECT_3
|
||||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||
EXPECT_2
|
||||
2
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`f2` int(11) DEFAULT NULL,
|
||||
`f3` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`f1`),
|
||||
UNIQUE KEY `i1` (`f2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2047 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||
EXPECT_1001
|
||||
1001
|
||||
|
||||
53
mysql-test/suite/galera/t/MDEV-37366.test
Normal file
53
mysql-test/suite/galera/t/MDEV-37366.test
Normal file
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# MDEV-37366: Inconsistency detected - create sequence
|
||||
# Failed 'SELECT NEXT VALUE' on applier node.
|
||||
#
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/big_test.inc
|
||||
--source include/have_log_bin.inc
|
||||
|
||||
#
|
||||
# Save original auto_increment_offset values.
|
||||
#
|
||||
--let $node_1=node_1
|
||||
--let $node_2=node_2
|
||||
--source ../galera/include/auto_increment_offset_save.inc
|
||||
|
||||
#
|
||||
# Verify there are two nodes in galera cluster.
|
||||
#
|
||||
--connection node_1
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
#
|
||||
# Create a sequence table on node1.
|
||||
#
|
||||
SET SESSION binlog_row_image=minimal;
|
||||
CREATE SEQUENCE `seq_test` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 0 cache 1000 nocycle ENGINE=InnoDB;
|
||||
SHOW CREATE TABLE seq_test;
|
||||
|
||||
#
|
||||
# Execute 'SELECT NEXT VALUE' which should not fail on applier node.
|
||||
#
|
||||
--disable_ps_protocol
|
||||
SELECT NEXT VALUE FOR seq_test;
|
||||
SELECT NEXT VALUE FOR seq_test;
|
||||
--enable_ps_protocol
|
||||
|
||||
#
|
||||
# Verify there are two nodes in galera cluster.
|
||||
#
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
--connection node_2
|
||||
|
||||
DROP SEQUENCE seq_test;
|
||||
|
||||
# Restore original variable values.
|
||||
--source ../galera/include/auto_increment_offset_restore.inc
|
||||
@@ -42,7 +42,7 @@ SET SESSION wsrep_sync_wait=0;
|
||||
--send CREATE UNIQUE INDEX i1 ON t1(f2);
|
||||
|
||||
--connection node_1a
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'acquiring total order%' or STATE LIKE 'Waiting for table metadata%'
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock%' OR STATE LIKE 'acquiring total order isolation%' OR STATE LIKE 'Waiting to execute in isolation%';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--echo # Signal DDL 1
|
||||
@@ -66,7 +66,6 @@ SET SESSION wsrep_sync_wait=0;
|
||||
|
||||
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||
|
||||
--connection node_1
|
||||
@@ -79,7 +78,6 @@ SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||
|
||||
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -20,7 +20,7 @@ SET SESSION wsrep_sync_wait=0;
|
||||
|
||||
--connection node_2_ctrl
|
||||
SET SESSION wsrep_sync_wait = 0;
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock%' OR STATE LIKE 'acquiring total order isolation%';
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock%' OR STATE LIKE 'acquiring total order isolation%' OR STATE LIKE 'Waiting to execute in isolation%';
|
||||
--let $wait_condition_on_error_output = SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
--source include/wait_condition_with_debug_and_kill.inc
|
||||
|
||||
@@ -29,7 +29,7 @@ SET SESSION wsrep_sync_wait = 0;
|
||||
--send REPAIR TABLE t1,t2;
|
||||
|
||||
--connection node_2_ctrl
|
||||
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock%' OR STATE LIKE 'acquiring total order isolation%';
|
||||
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock%' OR STATE LIKE 'acquiring total order isolation%' OR STATE LIKE 'Waiting to execute in isolation%';
|
||||
--let $wait_condition_on_error_output = SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
--source include/wait_condition_with_debug_and_kill.inc
|
||||
|
||||
|
||||
@@ -46,6 +46,8 @@ SELECT VARIABLE_VALUE AS expect_Primary FROM INFORMATION_SCHEMA.GLOBAL_STATUS WH
|
||||
|
||||
--connection node_2
|
||||
SET SESSION wsrep_on=OFF;
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 'Disconnected' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
--source include/wait_condition.inc
|
||||
SELECT VARIABLE_VALUE AS expect_Disconnected FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||
SET SESSION wsrep_on=ON;
|
||||
|
||||
|
||||
13
sql/table.cc
13
sql/table.cc
@@ -7978,6 +7978,19 @@ void TABLE::mark_columns_per_binlog_row_image()
|
||||
if (file->row_logging &&
|
||||
!ha_check_storage_engine_flag(s->db_type(), HTON_NO_BINLOG_ROW_OPT))
|
||||
{
|
||||
#ifdef WITH_WSREP
|
||||
/**
|
||||
The marking of all columns will prevent update/set column values for the
|
||||
sequence table. For the sequence table column bitmap sent from master is
|
||||
used.
|
||||
*/
|
||||
if (WSREP(thd) && wsrep_thd_is_applying(thd) &&
|
||||
s->sequence && s->primary_key >= MAX_KEY)
|
||||
{
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
/* if there is no PK, then mark all columns for the BI. */
|
||||
if (s->primary_key >= MAX_KEY)
|
||||
{
|
||||
|
||||
@@ -2827,7 +2827,7 @@ static int wsrep_TOI_begin(THD *thd, const char *db, const char *table,
|
||||
DBUG_ASSERT(wsrep_OSU_method_get(thd) == WSREP_OSU_TOI);
|
||||
|
||||
WSREP_DEBUG("TOI Begin: %s", wsrep_thd_query(thd));
|
||||
DEBUG_SYNC(thd, "wsrep_before_toi_begin");
|
||||
DEBUG_SYNC(thd, "wsrep_toi_begin");
|
||||
|
||||
if (!wsrep_ready ||
|
||||
wsrep_can_run_in_toi(thd, db, table, table_list, create_info) == false)
|
||||
|
||||
Submodule wsrep-lib updated: e55f01ce1e...14ce8cab76
Reference in New Issue
Block a user