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';
|
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
EXPECT_2
|
EXPECT_2
|
||||||
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;
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
EXPECT_1001
|
EXPECT_1001
|
||||||
1001
|
1001
|
||||||
@@ -54,15 +45,6 @@ EXPECT_3
|
|||||||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
EXPECT_2
|
EXPECT_2
|
||||||
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;
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
EXPECT_1001
|
EXPECT_1001
|
||||||
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);
|
--send CREATE UNIQUE INDEX i1 ON t1(f2);
|
||||||
|
|
||||||
--connection node_1a
|
--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
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--echo # Signal DDL 1
|
--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_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS 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;
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
|
|
||||||
--connection node_1
|
--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_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS 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;
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ SET SESSION wsrep_sync_wait=0;
|
|||||||
|
|
||||||
--connection node_2_ctrl
|
--connection node_2_ctrl
|
||||||
SET SESSION wsrep_sync_wait = 0;
|
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
|
--let $wait_condition_on_error_output = SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||||
--source include/wait_condition_with_debug_and_kill.inc
|
--source include/wait_condition_with_debug_and_kill.inc
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ SET SESSION wsrep_sync_wait = 0;
|
|||||||
--send REPAIR TABLE t1,t2;
|
--send REPAIR TABLE t1,t2;
|
||||||
|
|
||||||
--connection node_2_ctrl
|
--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
|
--let $wait_condition_on_error_output = SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||||
--source include/wait_condition_with_debug_and_kill.inc
|
--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
|
--connection node_2
|
||||||
SET SESSION wsrep_on=OFF;
|
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';
|
SELECT VARIABLE_VALUE AS expect_Disconnected FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
|
||||||
SET SESSION wsrep_on=ON;
|
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 &&
|
if (file->row_logging &&
|
||||||
!ha_check_storage_engine_flag(s->db_type(), HTON_NO_BINLOG_ROW_OPT))
|
!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 there is no PK, then mark all columns for the BI. */
|
||||||
if (s->primary_key >= MAX_KEY)
|
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);
|
DBUG_ASSERT(wsrep_OSU_method_get(thd) == WSREP_OSU_TOI);
|
||||||
|
|
||||||
WSREP_DEBUG("TOI Begin: %s", wsrep_thd_query(thd));
|
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 ||
|
if (!wsrep_ready ||
|
||||||
wsrep_can_run_in_toi(thd, db, table, table_list, create_info) == false)
|
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