1
0
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:
Julius Goryavsky
2025-03-05 01:54:40 +01:00
7 changed files with 28 additions and 17 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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";
} }

View File

@@ -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()));
} }