mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '10.5' into '10.6'
This commit is contained in:
@@ -3,8 +3,11 @@ connection node_1;
|
|||||||
CREATE TABLE t1(id int not null primary key, b int) engine=InnoDB;
|
CREATE TABLE t1(id int not null primary key, b int) engine=InnoDB;
|
||||||
INSERT INTO t1 VALUES (0,0),(1,1),(2,2),(3,3);
|
INSERT INTO t1 VALUES (0,0),(1,1),(2,2),(3,3);
|
||||||
BEGIN;
|
BEGIN;
|
||||||
|
SET DEBUG_SYNC = 'wsrep_after_statement_enter SIGNAL blocked';
|
||||||
UPDATE t1 set b = 100 where id between 1 and 2;;
|
UPDATE t1 set b = 100 where id between 1 and 2;;
|
||||||
connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
|
SET DEBUG_SYNC = 'now WAIT_FOR blocked';
|
||||||
|
SET DEBUG_SYNC = 'wsrep_after_statement_enter CLEAR';
|
||||||
connection node_1b;
|
connection node_1b;
|
||||||
SET @save_dbug = @@SESSION.debug_dbug;
|
SET @save_dbug = @@SESSION.debug_dbug;
|
||||||
SET @@SESSION.innodb_lock_wait_timeout=2;
|
SET @@SESSION.innodb_lock_wait_timeout=2;
|
||||||
@@ -20,5 +23,6 @@ id b
|
|||||||
1 100
|
1 100
|
||||||
2 100
|
2 100
|
||||||
3 3
|
3 3
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
disconnect node_1b;
|
disconnect node_1b;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@@ -8,7 +8,7 @@ connection node_2;
|
|||||||
SET SESSION wsrep_sync_wait = 0;
|
SET SESSION wsrep_sync_wait = 0;
|
||||||
SET GLOBAL wsrep_slave_threads = 2;
|
SET GLOBAL wsrep_slave_threads = 2;
|
||||||
***************************************************************
|
***************************************************************
|
||||||
scenario 1, conflicting UPDATE
|
scenario 1, conflicting UPDATE
|
||||||
***************************************************************
|
***************************************************************
|
||||||
SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_slave_enter_sync';
|
SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_slave_enter_sync';
|
||||||
connection node_1;
|
connection node_1;
|
||||||
@@ -31,7 +31,7 @@ SET SESSION wsrep_on = 1;
|
|||||||
SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_slave_enter_sync';
|
SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_slave_enter_sync';
|
||||||
SET GLOBAL wsrep_provider_options = 'dbug=';
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
***************************************************************
|
***************************************************************
|
||||||
scenario 2, conflicting DELETE
|
scenario 2, conflicting DELETE
|
||||||
***************************************************************
|
***************************************************************
|
||||||
SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_slave_enter_sync';
|
SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_slave_enter_sync';
|
||||||
connection node_1;
|
connection node_1;
|
||||||
|
@@ -6,9 +6,14 @@ CREATE TABLE t1(id int not null primary key, b int) engine=InnoDB;
|
|||||||
INSERT INTO t1 VALUES (0,0),(1,1),(2,2),(3,3);
|
INSERT INTO t1 VALUES (0,0),(1,1),(2,2),(3,3);
|
||||||
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
|
SET DEBUG_SYNC = 'wsrep_after_statement_enter SIGNAL blocked';
|
||||||
--send UPDATE t1 set b = 100 where id between 1 and 2;
|
--send UPDATE t1 set b = 100 where id between 1 and 2;
|
||||||
|
|
||||||
--connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
--connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
|
|
||||||
|
SET DEBUG_SYNC = 'now WAIT_FOR blocked';
|
||||||
|
SET DEBUG_SYNC = 'wsrep_after_statement_enter CLEAR';
|
||||||
|
|
||||||
--connection node_1b
|
--connection node_1b
|
||||||
SET @save_dbug = @@SESSION.debug_dbug;
|
SET @save_dbug = @@SESSION.debug_dbug;
|
||||||
SET @@SESSION.innodb_lock_wait_timeout=2;
|
SET @@SESSION.innodb_lock_wait_timeout=2;
|
||||||
@@ -21,5 +26,6 @@ SET @@SESSION.debug_dbug = @save_dbug;
|
|||||||
--reap
|
--reap
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
--disconnect node_1b
|
--disconnect node_1b
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@@ -26,7 +26,6 @@
|
|||||||
--source include/have_debug_sync.inc
|
--source include/have_debug_sync.inc
|
||||||
--source include/galera_have_debug_sync.inc
|
--source include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
|
|
||||||
# Setup
|
# Setup
|
||||||
|
|
||||||
CREATE TABLE t1 (f1 VARCHAR(32) NOT NULL) ENGINE=InnoDB;
|
CREATE TABLE t1 (f1 VARCHAR(32) NOT NULL) ENGINE=InnoDB;
|
||||||
@@ -44,7 +43,7 @@ SET SESSION wsrep_sync_wait = 0;
|
|||||||
SET GLOBAL wsrep_slave_threads = 2;
|
SET GLOBAL wsrep_slave_threads = 2;
|
||||||
|
|
||||||
--echo ***************************************************************
|
--echo ***************************************************************
|
||||||
--echo scenario 1, conflicting UPDATE
|
--echo scenario 1, conflicting UPDATE
|
||||||
--echo ***************************************************************
|
--echo ***************************************************************
|
||||||
|
|
||||||
# Set up a synchronization point to catch the first transaction
|
# Set up a synchronization point to catch the first transaction
|
||||||
@@ -99,9 +98,8 @@ COMMIT;
|
|||||||
--source include/galera_signal_sync_point.inc
|
--source include/galera_signal_sync_point.inc
|
||||||
--source include/galera_clear_sync_point.inc
|
--source include/galera_clear_sync_point.inc
|
||||||
|
|
||||||
|
|
||||||
--echo ***************************************************************
|
--echo ***************************************************************
|
||||||
--echo scenario 2, conflicting DELETE
|
--echo scenario 2, conflicting DELETE
|
||||||
--echo ***************************************************************
|
--echo ***************************************************************
|
||||||
|
|
||||||
# Set up a synchronization point to catch the first transaction
|
# Set up a synchronization point to catch the first transaction
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
--source include/have_debug_sync.inc
|
|
||||||
|
|
||||||
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1);
|
INSERT INTO t1 VALUES (1);
|
||||||
@@ -44,7 +43,6 @@ SELECT WSREP_SYNC_WAIT_UPTO_GTID('1-1-1,1-1-2');
|
|||||||
--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$wsrep_last_committed_gtid') AS WSREP_SYNC_WAIT_UPTO;
|
--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$wsrep_last_committed_gtid') AS WSREP_SYNC_WAIT_UPTO;
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
|
||||||
|
|
||||||
# Timeout if GTID is not received on time
|
# Timeout if GTID is not received on time
|
||||||
|
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
|
@@ -640,6 +640,9 @@ static uchar *read_buffpek_from_file(IO_CACHE *buffpek_pointers, uint count,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
|
|
||||||
|
static char dbug_row_print_buf[4096];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Print table's current row into a buffer and return a pointer to it.
|
Print table's current row into a buffer and return a pointer to it.
|
||||||
|
|
||||||
@@ -655,11 +658,9 @@ static uchar *read_buffpek_from_file(IO_CACHE *buffpek_pointers, uint count,
|
|||||||
const char* dbug_print_row(TABLE *table, const uchar *rec, bool print_names)
|
const char* dbug_print_row(TABLE *table, const uchar *rec, bool print_names)
|
||||||
{
|
{
|
||||||
Field **pfield;
|
Field **pfield;
|
||||||
const size_t alloc_size= 512;
|
char row_buff_tmp[512];
|
||||||
char *row_buff= (char *) alloc_root(&table->mem_root, alloc_size);
|
String tmp(row_buff_tmp, sizeof(row_buff_tmp), &my_charset_bin);
|
||||||
char *row_buff_tmp= (char *) alloc_root(&table->mem_root, alloc_size);
|
String output(dbug_row_print_buf, sizeof(dbug_row_print_buf), &my_charset_bin);
|
||||||
String tmp(row_buff_tmp, alloc_size, &my_charset_bin);
|
|
||||||
String output(row_buff, alloc_size, &my_charset_bin);
|
|
||||||
|
|
||||||
auto move_back_lambda= [table, rec]() mutable {
|
auto move_back_lambda= [table, rec]() mutable {
|
||||||
table->move_fields(table->field, table->record[0], rec);
|
table->move_fields(table->field, table->record[0], rec);
|
||||||
@@ -723,8 +724,10 @@ const char* dbug_print_row(TABLE *table, const uchar *rec, bool print_names)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
output.append(')');
|
output.append(')');
|
||||||
|
if (output.c_ptr() == dbug_row_print_buf)
|
||||||
return output.c_ptr_safe();
|
return dbug_row_print_buf;
|
||||||
|
else
|
||||||
|
return "Couldn't fit into buffer";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -682,6 +682,8 @@ int ha_initialize_handlerton(void *plugin_)
|
|||||||
|
|
||||||
DBUG_EXECUTE_IF("unstable_db_type", {
|
DBUG_EXECUTE_IF("unstable_db_type", {
|
||||||
static int i= (int) DB_TYPE_FIRST_DYNAMIC;
|
static int i= (int) DB_TYPE_FIRST_DYNAMIC;
|
||||||
|
while (installed_htons[i])
|
||||||
|
i++;
|
||||||
hton->db_type= (enum legacy_db_type)++i;
|
hton->db_type= (enum legacy_db_type)++i;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2292,7 +2294,7 @@ int ha_rollback_trans(THD *thd, bool all)
|
|||||||
"conf %d wsrep_err %s SQL %s",
|
"conf %d wsrep_err %s SQL %s",
|
||||||
thd->thread_id, thd->query_id, thd->wsrep_trx().state(),
|
thd->thread_id, thd->query_id, thd->wsrep_trx().state(),
|
||||||
wsrep::to_c_string(thd->wsrep_cs().current_error()),
|
wsrep::to_c_string(thd->wsrep_cs().current_error()),
|
||||||
thd->query());
|
wsrep_thd_query(thd));
|
||||||
}
|
}
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
}
|
}
|
||||||
@@ -2308,7 +2310,7 @@ int ha_rollback_trans(THD *thd, bool all)
|
|||||||
if (WSREP(thd) && thd->is_error())
|
if (WSREP(thd) && thd->is_error())
|
||||||
{
|
{
|
||||||
WSREP_DEBUG("ha_rollback_trans(%lld, %s) rolled back: msg %s is_real %d wsrep_err %s",
|
WSREP_DEBUG("ha_rollback_trans(%lld, %s) rolled back: msg %s is_real %d wsrep_err %s",
|
||||||
thd->thread_id, all? "TRUE" : "FALSE",
|
thd->thread_id, all ? "TRUE" : "FALSE",
|
||||||
thd->get_stmt_da()->message(), is_real_trans,
|
thd->get_stmt_da()->message(), is_real_trans,
|
||||||
wsrep::to_c_string(thd->wsrep_cs().current_error()));
|
wsrep::to_c_string(thd->wsrep_cs().current_error()));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user