summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-06-02 16:51:13 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2022-06-02 16:51:13 +0300
commit4b3c3e526e7067da921d0aef8451b6e2736a5fe0 (patch)
tree40a6d851d7c39c443c587e29a725afda85c65929
parente7de50a82187cbaaa192c2065d64c0041cd9a6a1 (diff)
parent96f4b4a55b449a29af7e4b70bebf0ff238ae7f80 (diff)
downloadmariadb-git-4b3c3e526e7067da921d0aef8451b6e2736a5fe0.tar.gz
Merge 10.4 into 10.5
-rw-r--r--client/client_priv.h3
-rw-r--r--client/mysql.cc10
-rw-r--r--extra/mariabackup/ds_compress.cc100
-rw-r--r--man/mysql.115
-rw-r--r--mysql-test/main/mysql.result5
-rw-r--r--mysql-test/main/mysql.test8
-rw-r--r--mysql-test/main/partition_error.result13
-rw-r--r--mysql-test/main/partition_error.test14
-rw-r--r--mysql-test/suite/galera/r/MDEV-18832.result3
-rw-r--r--mysql-test/suite/galera/r/MDEV-27862.result54
-rw-r--r--mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff202
-rw-r--r--mysql-test/suite/galera/r/galera_ist_MDEV-28423.result558
-rw-r--r--mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff202
-rw-r--r--mysql-test/suite/galera/r/galera_ist_MDEV-28583.result558
-rw-r--r--mysql-test/suite/galera/r/galera_sequences.result5
-rw-r--r--mysql-test/suite/galera/t/MDEV-18832.test8
-rw-r--r--mysql-test/suite/galera/t/MDEV-27862.combinations4
-rw-r--r--mysql-test/suite/galera/t/MDEV-27862.test67
-rw-r--r--mysql-test/suite/galera/t/galera_sequences.test6
-rw-r--r--mysql-test/suite/innodb_fts/r/fulltext.result14
-rw-r--r--mysql-test/suite/innodb_fts/t/fulltext.test16
-rw-r--r--scripts/wsrep_sst_mariabackup.sh5
-rw-r--r--sql/ha_sequence.cc3
-rw-r--r--sql/log.cc10
-rw-r--r--sql/log.h2
-rw-r--r--sql/partition_info.cc2
-rw-r--r--sql/sql_partition_admin.cc8
-rw-r--r--sql/sql_sequence.cc11
-rw-r--r--sql/table.h5
-rw-r--r--sql/wsrep_binlog.cc8
-rw-r--r--sql/wsrep_client_service.cc29
-rw-r--r--sql/wsrep_mysqld.cc10
-rw-r--r--storage/connect/tabmysql.cpp19
-rw-r--r--storage/innobase/dict/dict0load.cc1
-rw-r--r--storage/innobase/os/os0file.cc1
-rw-r--r--storage/maria/ma_loghandler.c12
36 files changed, 800 insertions, 1191 deletions
diff --git a/client/client_priv.h b/client/client_priv.h
index b1c379bf930..16547494d03 100644
--- a/client/client_priv.h
+++ b/client/client_priv.h
@@ -1,6 +1,6 @@
/*
Copyright (c) 2001, 2012, Oracle and/or its affiliates.
- Copyright (c) 2009, 2020, MariaDB
+ Copyright (c) 2009, 2022, MariaDB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -102,6 +102,7 @@ enum options_client
OPT_IGNORE_DATA,
OPT_PRINT_ROW_COUNT, OPT_PRINT_ROW_EVENT_POSITIONS,
OPT_CHECK_IF_UPGRADE_NEEDED,
+ OPT_COMPATIBILTY_CLEARTEXT_PLUGIN,
OPT_SHUTDOWN_WAIT_FOR_SLAVES,
OPT_COPY_S3_TABLES,
OPT_PRINT_TABLE_METADATA,
diff --git a/client/mysql.cc b/client/mysql.cc
index 15325aec69d..8a72a86f798 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -1514,6 +1514,8 @@ static struct my_option my_long_options[] =
&delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"execute", 'e', "Execute command and quit. (Disables --force and history file.)", 0,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"enable-cleartext-plugin", OPT_COMPATIBILTY_CLEARTEXT_PLUGIN, "Obsolete option. Exists only for MySQL compatibility.",
+ 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"vertical", 'E', "Print the output of a query (rows) vertically.",
&vertical, &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
@@ -1812,6 +1814,14 @@ get_one_option(const struct my_option *opt, const char *argument, const char *)
printf("WARNING: --server-arg option not supported in this configuration.\n");
#endif
break;
+ case OPT_COMPATIBILTY_CLEARTEXT_PLUGIN:
+ /*
+ This option exists in MySQL client but not in MariaDB. Users switching from
+ MySQL might still have this option in their commands, and it will not work
+ in MariaDB unless it is handled. Therefore output a warning and continue.
+ */
+ printf("WARNING: option '--enable-cleartext-plugin' is obsolete.\n");
+ break;
case 'A':
opt_rehash= 0;
break;
diff --git a/extra/mariabackup/ds_compress.cc b/extra/mariabackup/ds_compress.cc
index 40566a1a8b1..eed3467b7f4 100644
--- a/extra/mariabackup/ds_compress.cc
+++ b/extra/mariabackup/ds_compress.cc
@@ -1,5 +1,6 @@
/******************************************************
Copyright (c) 2011-2013 Percona LLC and/or its affiliates.
+Copyright (c) 2022, MariaDB Corporation.
Compressing datasink implementation for XtraBackup.
@@ -32,11 +33,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
typedef struct {
pthread_t id;
uint num;
- pthread_mutex_t ctrl_mutex;
- pthread_cond_t ctrl_cond;
pthread_mutex_t data_mutex;
pthread_cond_t data_cond;
- my_bool started;
my_bool data_avail;
my_bool cancelled;
const char *from;
@@ -206,14 +204,13 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
thd = threads + i;
- pthread_mutex_lock(&thd->ctrl_mutex);
+ pthread_mutex_lock(&thd->data_mutex);
chunk_len = (len > COMPRESS_CHUNK_SIZE) ?
COMPRESS_CHUNK_SIZE : len;
thd->from = ptr;
thd->from_len = chunk_len;
- pthread_mutex_lock(&thd->data_mutex);
thd->data_avail = TRUE;
pthread_cond_signal(&thd->data_cond);
pthread_mutex_unlock(&thd->data_mutex);
@@ -239,26 +236,24 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
xb_a(threads[i].to_len > 0);
- if (ds_write(dest_file, "NEWBNEWB", 8) ||
- write_uint64_le(dest_file,
- comp_file->bytes_processed)) {
- msg("compress: write to the destination stream "
- "failed.");
- return 1;
+ bool fail = ds_write(dest_file, "NEWBNEWB", 8) ||
+ write_uint64_le(dest_file,
+ comp_file->bytes_processed);
+ comp_file->bytes_processed += threads[i].from_len;
+
+ if (!fail) {
+ fail = write_uint32_le(dest_file, threads[i].adler) ||
+ ds_write(dest_file, threads[i].to,
+ threads[i].to_len);
}
- comp_file->bytes_processed += threads[i].from_len;
+ pthread_mutex_unlock(&threads[i].data_mutex);
- if (write_uint32_le(dest_file, threads[i].adler) ||
- ds_write(dest_file, threads[i].to,
- threads[i].to_len)) {
+ if (fail) {
msg("compress: write to the destination stream "
"failed.");
return 1;
}
-
- pthread_mutex_unlock(&threads[i].data_mutex);
- pthread_mutex_unlock(&threads[i].ctrl_mutex);
}
}
@@ -329,6 +324,23 @@ write_uint64_le(ds_file_t *file, ulonglong n)
}
static
+void
+destroy_worker_thread(comp_thread_ctxt_t *thd)
+{
+ pthread_mutex_lock(&thd->data_mutex);
+ thd->cancelled = TRUE;
+ pthread_cond_signal(&thd->data_cond);
+ pthread_mutex_unlock(&thd->data_mutex);
+
+ pthread_join(thd->id, NULL);
+
+ pthread_cond_destroy(&thd->data_cond);
+ pthread_mutex_destroy(&thd->data_mutex);
+
+ my_free(thd->to);
+}
+
+static
comp_thread_ctxt_t *
create_worker_threads(uint n)
{
@@ -342,53 +354,31 @@ create_worker_threads(uint n)
comp_thread_ctxt_t *thd = threads + i;
thd->num = i + 1;
- thd->started = FALSE;
thd->cancelled = FALSE;
thd->data_avail = FALSE;
thd->to = (char *) my_malloc(PSI_NOT_INSTRUMENTED,
COMPRESS_CHUNK_SIZE + MY_QLZ_COMPRESS_OVERHEAD, MYF(MY_FAE));
- /* Initialize the control mutex and condition var */
- if (pthread_mutex_init(&thd->ctrl_mutex, NULL) ||
- pthread_cond_init(&thd->ctrl_cond, NULL)) {
- goto err;
- }
-
/* Initialize and data mutex and condition var */
if (pthread_mutex_init(&thd->data_mutex, NULL) ||
pthread_cond_init(&thd->data_cond, NULL)) {
goto err;
}
- pthread_mutex_lock(&thd->ctrl_mutex);
-
if (pthread_create(&thd->id, NULL, compress_worker_thread_func,
thd)) {
msg("compress: pthread_create() failed: "
"errno = %d", errno);
- pthread_mutex_unlock(&thd->ctrl_mutex);
goto err;
}
}
- /* Wait for the threads to start */
- for (i = 0; i < n; i++) {
- comp_thread_ctxt_t *thd = threads + i;
-
- while (thd->started == FALSE)
- pthread_cond_wait(&thd->ctrl_cond, &thd->ctrl_mutex);
- pthread_mutex_unlock(&thd->ctrl_mutex);
- }
-
return threads;
err:
- while (i > 0) {
- comp_thread_ctxt_t *thd;
- i--;
- thd = threads + i;
- pthread_mutex_unlock(&thd->ctrl_mutex);
+ for (; i; i--) {
+ destroy_worker_thread(threads + i);
}
my_free(threads);
@@ -402,21 +392,7 @@ destroy_worker_threads(comp_thread_ctxt_t *threads, uint n)
uint i;
for (i = 0; i < n; i++) {
- comp_thread_ctxt_t *thd = threads + i;
-
- pthread_mutex_lock(&thd->data_mutex);
- threads[i].cancelled = TRUE;
- pthread_cond_signal(&thd->data_cond);
- pthread_mutex_unlock(&thd->data_mutex);
-
- pthread_join(thd->id, NULL);
-
- pthread_cond_destroy(&thd->data_cond);
- pthread_mutex_destroy(&thd->data_mutex);
- pthread_cond_destroy(&thd->ctrl_cond);
- pthread_mutex_destroy(&thd->ctrl_mutex);
-
- my_free(thd->to);
+ destroy_worker_thread(threads + i);
}
my_free(threads);
@@ -428,19 +404,9 @@ compress_worker_thread_func(void *arg)
{
comp_thread_ctxt_t *thd = (comp_thread_ctxt_t *) arg;
- pthread_mutex_lock(&thd->ctrl_mutex);
-
pthread_mutex_lock(&thd->data_mutex);
- thd->started = TRUE;
- pthread_cond_signal(&thd->ctrl_cond);
-
- pthread_mutex_unlock(&thd->ctrl_mutex);
-
while (1) {
- thd->data_avail = FALSE;
- pthread_cond_signal(&thd->data_cond);
-
while (!thd->data_avail && !thd->cancelled) {
pthread_cond_wait(&thd->data_cond, &thd->data_mutex);
}
diff --git a/man/mysql.1 b/man/mysql.1
index 0d83b89a0ab..a64051b0f77 100644
--- a/man/mysql.1
+++ b/man/mysql.1
@@ -507,6 +507,21 @@ the section called \(lqMYSQL COMMANDS\(rq\&.
.sp -1
.IP \(bu 2.3
.\}
+.\" mysql: enable cleartext plugin option
+.\" enable cleartext plugin option: mysql
+\fB\-\-enable\-cleartext\-plugin\fR
+.sp
+Obsolete option\&. Exists only for MySQL compatibility\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
.\" mysql: execute option
.\" execute option: mysql
\fB\-\-execute=\fR\fB\fIstatement\fR\fR,
diff --git a/mysql-test/main/mysql.result b/mysql-test/main/mysql.result
index ec2760ce8a7..9b0936b5924 100644
--- a/mysql-test/main/mysql.result
+++ b/mysql-test/main/mysql.result
@@ -629,4 +629,7 @@ drop table t1;
#
# MDEV-15538 '-N' Produce html output wrong
#
-<TABLE BORDER=1><TR><TD>1</TD></TR></TABLE> \ No newline at end of file
+<TABLE BORDER=1><TR><TD>1</TD></TR></TABLE>
+WARNING: option '--enable-cleartext-plugin' is obsolete.
+1
+1
diff --git a/mysql-test/main/mysql.test b/mysql-test/main/mysql.test
index 1cb4977a32d..0f41add821a 100644
--- a/mysql-test/main/mysql.test
+++ b/mysql-test/main/mysql.test
@@ -708,3 +708,11 @@ drop table t1;
--echo # MDEV-15538 '-N' Produce html output wrong
--echo #
--exec $MYSQL -NHe "select 1 as a"
+
+
+#
+# Test obsolete option --enable-cleartext-plugin
+# This should proceed with a warning
+#
+--echo
+--exec $MYSQL test --enable-cleartext-plugin -e "select 1"
diff --git a/mysql-test/main/partition_error.result b/mysql-test/main/partition_error.result
index 25c29938f91..b6cd903ccca 100644
--- a/mysql-test/main/partition_error.result
+++ b/mysql-test/main/partition_error.result
@@ -6,7 +6,18 @@ drop table if exists t1, t2;
CREATE TABLE t1 (a int);
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
-ERROR 42000: Can't open table
+ERROR HY000: 'test.v1' is not of type 'BASE TABLE'
+DROP VIEW v1;
+DROP TABLE t1;
+#
+# MDEV-28599 EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH_TABLE instead of ER_WRONG_OBJECT
+#
+CREATE TABLE t1 (a int)
+PARTITION BY HASH (a)
+PARTITIONS 2;
+CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
+ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
+ERROR HY000: 'test.v1' is not of type 'BASE TABLE'
DROP VIEW v1;
DROP TABLE t1;
#
diff --git a/mysql-test/main/partition_error.test b/mysql-test/main/partition_error.test
index 7436bb060d2..edfe7c827be 100644
--- a/mysql-test/main/partition_error.test
+++ b/mysql-test/main/partition_error.test
@@ -16,7 +16,19 @@ let $MYSQLD_DATADIR= `SELECT @@datadir`;
--echo #
CREATE TABLE t1 (a int);
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
---error ER_CHECK_NO_SUCH_TABLE
+--error ER_WRONG_OBJECT
+ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
+DROP VIEW v1;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-28599 EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH_TABLE instead of ER_WRONG_OBJECT
+--echo #
+CREATE TABLE t1 (a int)
+PARTITION BY HASH (a)
+PARTITIONS 2;
+CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
+--error ER_WRONG_OBJECT
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
DROP VIEW v1;
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/MDEV-18832.result b/mysql-test/suite/galera/r/MDEV-18832.result
index 700a0bbefb1..2e0872b9f2e 100644
--- a/mysql-test/suite/galera/r/MDEV-18832.result
+++ b/mysql-test/suite/galera/r/MDEV-18832.result
@@ -12,3 +12,6 @@ INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
DROP SEQUENCE Seq1_1;
DROP TABLE t1;
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+connection node_2;
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
diff --git a/mysql-test/suite/galera/r/MDEV-27862.result b/mysql-test/suite/galera/r/MDEV-27862.result
new file mode 100644
index 00000000000..25b7bc6cfd2
--- /dev/null
+++ b/mysql-test/suite/galera/r/MDEV-27862.result
@@ -0,0 +1,54 @@
+connection node_2;
+connection node_1;
+CREATE SEQUENCE seq_nocache ENGINE=InnoDB;
+DROP SEQUENCE seq_nocache;
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+connection node_2;
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+connection node_1;
+CREATE SEQUENCE seq NOCACHE ENGINE=InnoDB;
+SELECT NEXTVAL(seq) = 1;
+NEXTVAL(seq) = 1
+1
+connection node_2;
+SELECT NEXTVAL(seq) = 2;
+NEXTVAL(seq) = 2
+1
+connection node_1;
+SELECT NEXTVAL(seq) = 3;
+NEXTVAL(seq) = 3
+1
+SELECT SETVAL(seq, 100);
+SETVAL(seq, 100)
+100
+connection node_2;
+SELECT NEXTVAL(seq) = 101;
+NEXTVAL(seq) = 101
+1
+connection node_1;
+SELECT NEXTVAL(seq) = 102;
+NEXTVAL(seq) = 102
+1
+DROP SEQUENCE seq;
+CREATE TABLE t1(f1 INT);
+CREATE SEQUENCE seq_transaction NOCACHE ENGINE=InnoDB;
+START TRANSACTION;
+INSERT INTO t1 VALUES (0);
+SELECT NEXTVAL(seq_transaction);
+NEXTVAL(seq_transaction)
+1
+INSERT INTO t1 VALUES (NEXTVAL(seq_transaction));
+COMMIT;
+connection node_2;
+SELECT COUNT(*) = 2 FROM t1;
+COUNT(*) = 2
+1
+SELECT NEXTVAL(seq_transaction) = 3;
+NEXTVAL(seq_transaction) = 3
+1
+connection node_1;
+SELECT NEXTVAL(seq_transaction) = 4;
+NEXTVAL(seq_transaction) = 4
+1
+DROP SEQUENCE seq_transaction;
+DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff
index 8c84321e774..f9f81ea3b40 100644
--- a/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff
+++ b/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff
@@ -1,27 +1,27 @@
--- r/galera_ist_MDEV-28423.result
-+++ r/galera_ist_MDEV-28423,debug.reject
-@@ -517,3 +517,187 @@
- 1
++++ r/galera_ist_MDEV-28423.reject
+@@ -286,3 +286,111 @@
DROP TABLE t1;
COMMIT;
+ SET AUTOCOMMIT=ON;
+Performing State Transfer on a server that has been killed and restarted
+while a DDL was in progress on it
+connection node_1;
-+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
++CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 VALUES (1,'node1_committed_before');
-+INSERT INTO t1 VALUES (2,'node1_committed_before');
-+INSERT INTO t1 VALUES (3,'node1_committed_before');
-+INSERT INTO t1 VALUES (4,'node1_committed_before');
-+INSERT INTO t1 VALUES (5,'node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
+connection node_2;
+START TRANSACTION;
-+INSERT INTO t1 VALUES (6,'node2_committed_before');
-+INSERT INTO t1 VALUES (7,'node2_committed_before');
-+INSERT INTO t1 VALUES (8,'node2_committed_before');
-+INSERT INTO t1 VALUES (9,'node2_committed_before');
-+INSERT INTO t1 VALUES (10,'node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
+COMMIT;
+SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
+connection node_1;
@@ -32,26 +32,26 @@
+connection node_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
+COMMIT;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (20,'node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (25,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
+Performing --wsrep-recover ...
+connection node_2;
@@ -59,132 +59,56 @@
+Using --wsrep-start-position when starting mysqld ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
+COMMIT;
+connection node_1;
-+INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (35,'node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_kill_slave_ddl;
-+INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (45,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
+ROLLBACK;
-+SET AUTOCOMMIT=ON;
-+SET SESSION wsrep_sync_wait=15;
-+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
-+EXPECT_3
-+3
-+SELECT COUNT(*) AS EXPECT_35 FROM t1;
-+EXPECT_35
-+35
-+SELECT * FROM t1;
-+id f1 f2
-+1 node1_committed_before NULL
-+2 node1_committed_before NULL
-+3 node1_committed_before NULL
-+4 node1_committed_before NULL
-+5 node1_committed_before NULL
-+6 node2_committed_before NULL
-+7 node2_committed_before NULL
-+8 node2_committed_before NULL
-+9 node2_committed_before NULL
-+10 node2_committed_before NULL
-+11 node1_committed_during NULL
-+12 node1_committed_during NULL
-+13 node1_committed_during NULL
-+14 node1_committed_during NULL
-+15 node1_committed_during NULL
-+16 node1_to_be_committed_after NULL
-+17 node1_to_be_committed_after NULL
-+18 node1_to_be_committed_after NULL
-+19 node1_to_be_committed_after NULL
-+20 node1_to_be_committed_after NULL
-+26 node2_committed_after NULL
-+27 node2_committed_after NULL
-+28 node2_committed_after NULL
-+29 node2_committed_after NULL
-+30 node2_committed_after NULL
-+31 node1_to_be_committed_after NULL
-+32 node1_to_be_committed_after NULL
-+33 node1_to_be_committed_after NULL
-+34 node1_to_be_committed_after NULL
-+35 node1_to_be_committed_after NULL
-+36 node1_committed_after NULL
-+37 node1_committed_after NULL
-+38 node1_committed_after NULL
-+39 node1_committed_after NULL
-+40 node1_committed_after NULL
++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++COUNT(*) = 2
++1
++SELECT COUNT(*) = 35 FROM t1;
++COUNT(*) = 35
++1
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
-+connection node_1;
+SET AUTOCOMMIT=ON;
-+SET SESSION wsrep_sync_wait=15;
-+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
-+EXPECT_3
-+3
-+SELECT COUNT(*) AS EXPECT_35 FROM t1;
-+EXPECT_35
-+35
-+SELECT * FROM t1;
-+id f1 f2
-+1 node1_committed_before NULL
-+2 node1_committed_before NULL
-+3 node1_committed_before NULL
-+4 node1_committed_before NULL
-+5 node1_committed_before NULL
-+6 node2_committed_before NULL
-+7 node2_committed_before NULL
-+8 node2_committed_before NULL
-+9 node2_committed_before NULL
-+10 node2_committed_before NULL
-+11 node1_committed_during NULL
-+12 node1_committed_during NULL
-+13 node1_committed_during NULL
-+14 node1_committed_during NULL
-+15 node1_committed_during NULL
-+16 node1_to_be_committed_after NULL
-+17 node1_to_be_committed_after NULL
-+18 node1_to_be_committed_after NULL
-+19 node1_to_be_committed_after NULL
-+20 node1_to_be_committed_after NULL
-+26 node2_committed_after NULL
-+27 node2_committed_after NULL
-+28 node2_committed_after NULL
-+29 node2_committed_after NULL
-+30 node2_committed_after NULL
-+31 node1_to_be_committed_after NULL
-+32 node1_to_be_committed_after NULL
-+33 node1_to_be_committed_after NULL
-+34 node1_to_be_committed_after NULL
-+35 node1_to_be_committed_after NULL
-+36 node1_committed_after NULL
-+37 node1_committed_after NULL
-+38 node1_committed_after NULL
-+39 node1_committed_after NULL
-+40 node1_committed_after NULL
++connection node_1;
++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++COUNT(*) = 2
++1
++SELECT COUNT(*) = 35 FROM t1;
++COUNT(*) = 35
++1
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
++SET AUTOCOMMIT=ON;
+SET GLOBAL debug_dbug = $debug_orig;
diff --git a/mysql-test/suite/galera/r/galera_ist_MDEV-28423.result b/mysql-test/suite/galera/r/galera_ist_MDEV-28423.result
index 5a71b490a80..80a28d349ba 100644
--- a/mysql-test/suite/galera/r/galera_ist_MDEV-28423.result
+++ b/mysql-test/suite/galera/r/galera_ist_MDEV-28423.result
@@ -1,519 +1,287 @@
-connection node_2;
-connection node_1;
connection node_1;
connection node_2;
Performing State Transfer on a server that has been temporarily disconnected
connection node_1;
-CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (1,'node1_committed_before');
-INSERT INTO t1 VALUES (2,'node1_committed_before');
-INSERT INTO t1 VALUES (3,'node1_committed_before');
-INSERT INTO t1 VALUES (4,'node1_committed_before');
-INSERT INTO t1 VALUES (5,'node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (6,'node2_committed_before');
-INSERT INTO t1 VALUES (7,'node2_committed_before');
-INSERT INTO t1 VALUES (8,'node2_committed_before');
-INSERT INTO t1 VALUES (9,'node2_committed_before');
-INSERT INTO t1 VALUES (10,'node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Unloading wsrep provider ...
SET GLOBAL wsrep_cluster_address = '';
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (11,'node1_committed_during');
-INSERT INTO t1 VALUES (12,'node1_committed_during');
-INSERT INTO t1 VALUES (13,'node1_committed_during');
-INSERT INTO t1 VALUES (14,'node1_committed_during');
-INSERT INTO t1 VALUES (15,'node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
COMMIT;
START TRANSACTION;
-INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
connect node_1a_galera_st_disconnect_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
connection node_2;
Loading wsrep provider ...
-disconnect node_2;
-connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2;
-connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (26,'node2_committed_after');
-INSERT INTO t1 VALUES (27,'node2_committed_after');
-INSERT INTO t1 VALUES (28,'node2_committed_after');
-INSERT INTO t1 VALUES (29,'node2_committed_after');
-INSERT INTO t1 VALUES (30,'node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
connection node_1;
-INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
COMMIT;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (36,'node1_committed_after');
-INSERT INTO t1 VALUES (37,'node1_committed_after');
-INSERT INTO t1 VALUES (38,'node1_committed_after');
-INSERT INTO t1 VALUES (39,'node1_committed_after');
-INSERT INTO t1 VALUES (40,'node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
connection node_1a_galera_st_disconnect_slave;
-INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
ROLLBACK;
-SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
-connection node_1;
+COMMIT;
SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+connection node_1;
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
DROP TABLE t1;
COMMIT;
+SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been shut down cleanly and restarted
connection node_1;
-CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (1,'node1_committed_before');
-INSERT INTO t1 VALUES (2,'node1_committed_before');
-INSERT INTO t1 VALUES (3,'node1_committed_before');
-INSERT INTO t1 VALUES (4,'node1_committed_before');
-INSERT INTO t1 VALUES (5,'node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (6,'node2_committed_before');
-INSERT INTO t1 VALUES (7,'node2_committed_before');
-INSERT INTO t1 VALUES (8,'node2_committed_before');
-INSERT INTO t1 VALUES (9,'node2_committed_before');
-INSERT INTO t1 VALUES (10,'node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Shutting down server ...
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (11,'node1_committed_during');
-INSERT INTO t1 VALUES (12,'node1_committed_during');
-INSERT INTO t1 VALUES (13,'node1_committed_during');
-INSERT INTO t1 VALUES (14,'node1_committed_during');
-INSERT INTO t1 VALUES (15,'node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
COMMIT;
START TRANSACTION;
-INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
connection node_2;
Starting server ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (26,'node2_committed_after');
-INSERT INTO t1 VALUES (27,'node2_committed_after');
-INSERT INTO t1 VALUES (28,'node2_committed_after');
-INSERT INTO t1 VALUES (29,'node2_committed_after');
-INSERT INTO t1 VALUES (30,'node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
connection node_1;
-INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
COMMIT;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (36,'node1_committed_after');
-INSERT INTO t1 VALUES (37,'node1_committed_after');
-INSERT INTO t1 VALUES (38,'node1_committed_after');
-INSERT INTO t1 VALUES (39,'node1_committed_after');
-INSERT INTO t1 VALUES (40,'node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
connection node_1a_galera_st_shutdown_slave;
-INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
ROLLBACK;
-SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_15 FROM t1;
-EXPECT_15
-35
-SELECT * from t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
COMMIT;
-connection node_1;
SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_15 FROM t1;
-EXPECT_15
-35
-SELECT * from t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+connection node_1;
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
DROP TABLE t1;
COMMIT;
+SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been killed and restarted
connection node_1;
-CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (1,'node1_committed_before');
-INSERT INTO t1 VALUES (2,'node1_committed_before');
-INSERT INTO t1 VALUES (3,'node1_committed_before');
-INSERT INTO t1 VALUES (4,'node1_committed_before');
-INSERT INTO t1 VALUES (5,'node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (6,'node2_committed_before');
-INSERT INTO t1 VALUES (7,'node2_committed_before');
-INSERT INTO t1 VALUES (8,'node2_committed_before');
-INSERT INTO t1 VALUES (9,'node2_committed_before');
-INSERT INTO t1 VALUES (10,'node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Killing server ...
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (11,'node1_committed_during');
-INSERT INTO t1 VALUES (12,'node1_committed_during');
-INSERT INTO t1 VALUES (13,'node1_committed_during');
-INSERT INTO t1 VALUES (14,'node1_committed_during');
-INSERT INTO t1 VALUES (15,'node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
COMMIT;
START TRANSACTION;
-INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
connection node_2;
Performing --wsrep-recover ...
Starting server ...
Using --wsrep-start-position when starting mysqld ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (26,'node2_committed_after');
-INSERT INTO t1 VALUES (27,'node2_committed_after');
-INSERT INTO t1 VALUES (28,'node2_committed_after');
-INSERT INTO t1 VALUES (29,'node2_committed_after');
-INSERT INTO t1 VALUES (30,'node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
connection node_1;
-INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
COMMIT;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (36,'node1_committed_after');
-INSERT INTO t1 VALUES (37,'node1_committed_after');
-INSERT INTO t1 VALUES (38,'node1_committed_after');
-INSERT INTO t1 VALUES (39,'node1_committed_after');
-INSERT INTO t1 VALUES (40,'node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
connection node_1a_galera_st_kill_slave;
-INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (46,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
ROLLBACK;
-SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
COMMIT;
-connection node_1;
SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+connection node_1;
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
DROP TABLE t1;
COMMIT;
+SET AUTOCOMMIT=ON;
diff --git a/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff
index 51d2a6bf157..ce78050538d 100644
--- a/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff
+++ b/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff
@@ -1,27 +1,27 @@
--- r/galera_ist_MDEV-28583.result
-+++ r/galera_ist_MDEV-28583,debug.reject
-@@ -517,3 +517,187 @@
- 1
++++ r/galera_ist_MDEV-28583.reject
+@@ -285,3 +285,111 @@
DROP TABLE t1;
COMMIT;
+ SET AUTOCOMMIT=ON;
+Performing State Transfer on a server that has been killed and restarted
+while a DDL was in progress on it
+connection node_1;
-+CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
++CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 VALUES (1,'node1_committed_before');
-+INSERT INTO t1 VALUES (2,'node1_committed_before');
-+INSERT INTO t1 VALUES (3,'node1_committed_before');
-+INSERT INTO t1 VALUES (4,'node1_committed_before');
-+INSERT INTO t1 VALUES (5,'node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
++INSERT INTO t1 VALUES ('node1_committed_before');
+connection node_2;
+START TRANSACTION;
-+INSERT INTO t1 VALUES (6,'node2_committed_before');
-+INSERT INTO t1 VALUES (7,'node2_committed_before');
-+INSERT INTO t1 VALUES (8,'node2_committed_before');
-+INSERT INTO t1 VALUES (9,'node2_committed_before');
-+INSERT INTO t1 VALUES (10,'node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
++INSERT INTO t1 VALUES ('node2_committed_before');
+COMMIT;
+SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
+connection node_1;
@@ -32,26 +32,26 @@
+connection node_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during');
-+INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
++INSERT INTO t1 (f1) VALUES ('node1_committed_during');
+COMMIT;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (20,'node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (25,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
+connection node_2;
+Performing --wsrep-recover ...
+connection node_2;
@@ -59,132 +59,56 @@
+Using --wsrep-start-position when starting mysqld ...
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
++INSERT INTO t1 (f1) VALUES ('node2_committed_after');
+COMMIT;
+connection node_1;
-+INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (35,'node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
+COMMIT;
+SET AUTOCOMMIT=OFF;
+START TRANSACTION;
-+INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after');
-+INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
++INSERT INTO t1 (f1) VALUES ('node1_committed_after');
+COMMIT;
+connection node_1a_galera_st_kill_slave_ddl;
-+INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after');
-+INSERT INTO t1 (id,f1) VALUES (45,'node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
+ROLLBACK;
-+SET AUTOCOMMIT=ON;
-+SET SESSION wsrep_sync_wait=15;
-+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
-+EXPECT_3
-+3
-+SELECT COUNT(*) AS EXPECT_35 FROM t1;
-+EXPECT_35
-+35
-+SELECT * FROM t1;
-+id f1 f2
-+1 node1_committed_before NULL
-+2 node1_committed_before NULL
-+3 node1_committed_before NULL
-+4 node1_committed_before NULL
-+5 node1_committed_before NULL
-+6 node2_committed_before NULL
-+7 node2_committed_before NULL
-+8 node2_committed_before NULL
-+9 node2_committed_before NULL
-+10 node2_committed_before NULL
-+11 node1_committed_during NULL
-+12 node1_committed_during NULL
-+13 node1_committed_during NULL
-+14 node1_committed_during NULL
-+15 node1_committed_during NULL
-+16 node1_to_be_committed_after NULL
-+17 node1_to_be_committed_after NULL
-+18 node1_to_be_committed_after NULL
-+19 node1_to_be_committed_after NULL
-+20 node1_to_be_committed_after NULL
-+26 node2_committed_after NULL
-+27 node2_committed_after NULL
-+28 node2_committed_after NULL
-+29 node2_committed_after NULL
-+30 node2_committed_after NULL
-+31 node1_to_be_committed_after NULL
-+32 node1_to_be_committed_after NULL
-+33 node1_to_be_committed_after NULL
-+34 node1_to_be_committed_after NULL
-+35 node1_to_be_committed_after NULL
-+36 node1_committed_after NULL
-+37 node1_committed_after NULL
-+38 node1_committed_after NULL
-+39 node1_committed_after NULL
-+40 node1_committed_after NULL
++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++COUNT(*) = 2
++1
++SELECT COUNT(*) = 35 FROM t1;
++COUNT(*) = 35
++1
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+COMMIT;
-+connection node_1;
+SET AUTOCOMMIT=ON;
-+SET SESSION wsrep_sync_wait=15;
-+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
-+EXPECT_3
-+3
-+SELECT COUNT(*) AS EXPECT_35 FROM t1;
-+EXPECT_35
-+35
-+SELECT * FROM t1;
-+id f1 f2
-+1 node1_committed_before NULL
-+2 node1_committed_before NULL
-+3 node1_committed_before NULL
-+4 node1_committed_before NULL
-+5 node1_committed_before NULL
-+6 node2_committed_before NULL
-+7 node2_committed_before NULL
-+8 node2_committed_before NULL
-+9 node2_committed_before NULL
-+10 node2_committed_before NULL
-+11 node1_committed_during NULL
-+12 node1_committed_during NULL
-+13 node1_committed_during NULL
-+14 node1_committed_during NULL
-+15 node1_committed_during NULL
-+16 node1_to_be_committed_after NULL
-+17 node1_to_be_committed_after NULL
-+18 node1_to_be_committed_after NULL
-+19 node1_to_be_committed_after NULL
-+20 node1_to_be_committed_after NULL
-+26 node2_committed_after NULL
-+27 node2_committed_after NULL
-+28 node2_committed_after NULL
-+29 node2_committed_after NULL
-+30 node2_committed_after NULL
-+31 node1_to_be_committed_after NULL
-+32 node1_to_be_committed_after NULL
-+33 node1_to_be_committed_after NULL
-+34 node1_to_be_committed_after NULL
-+35 node1_to_be_committed_after NULL
-+36 node1_committed_after NULL
-+37 node1_committed_after NULL
-+38 node1_committed_after NULL
-+39 node1_committed_after NULL
-+40 node1_committed_after NULL
++connection node_1;
++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
++COUNT(*) = 2
++1
++SELECT COUNT(*) = 35 FROM t1;
++COUNT(*) = 35
++1
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
+COUNT(*) = 0
+1
+DROP TABLE t1;
+COMMIT;
++SET AUTOCOMMIT=ON;
+SET GLOBAL debug_dbug = $debug_orig;
diff --git a/mysql-test/suite/galera/r/galera_ist_MDEV-28583.result b/mysql-test/suite/galera/r/galera_ist_MDEV-28583.result
index 5a71b490a80..80a28d349ba 100644
--- a/mysql-test/suite/galera/r/galera_ist_MDEV-28583.result
+++ b/mysql-test/suite/galera/r/galera_ist_MDEV-28583.result
@@ -1,519 +1,287 @@
-connection node_2;
-connection node_1;
connection node_1;
connection node_2;
Performing State Transfer on a server that has been temporarily disconnected
connection node_1;
-CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (1,'node1_committed_before');
-INSERT INTO t1 VALUES (2,'node1_committed_before');
-INSERT INTO t1 VALUES (3,'node1_committed_before');
-INSERT INTO t1 VALUES (4,'node1_committed_before');
-INSERT INTO t1 VALUES (5,'node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (6,'node2_committed_before');
-INSERT INTO t1 VALUES (7,'node2_committed_before');
-INSERT INTO t1 VALUES (8,'node2_committed_before');
-INSERT INTO t1 VALUES (9,'node2_committed_before');
-INSERT INTO t1 VALUES (10,'node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Unloading wsrep provider ...
SET GLOBAL wsrep_cluster_address = '';
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (11,'node1_committed_during');
-INSERT INTO t1 VALUES (12,'node1_committed_during');
-INSERT INTO t1 VALUES (13,'node1_committed_during');
-INSERT INTO t1 VALUES (14,'node1_committed_during');
-INSERT INTO t1 VALUES (15,'node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
COMMIT;
START TRANSACTION;
-INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
connect node_1a_galera_st_disconnect_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
connection node_2;
Loading wsrep provider ...
-disconnect node_2;
-connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2;
-connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (26,'node2_committed_after');
-INSERT INTO t1 VALUES (27,'node2_committed_after');
-INSERT INTO t1 VALUES (28,'node2_committed_after');
-INSERT INTO t1 VALUES (29,'node2_committed_after');
-INSERT INTO t1 VALUES (30,'node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
connection node_1;
-INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
COMMIT;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (36,'node1_committed_after');
-INSERT INTO t1 VALUES (37,'node1_committed_after');
-INSERT INTO t1 VALUES (38,'node1_committed_after');
-INSERT INTO t1 VALUES (39,'node1_committed_after');
-INSERT INTO t1 VALUES (40,'node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
connection node_1a_galera_st_disconnect_slave;
-INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
ROLLBACK;
-SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
-connection node_1;
+COMMIT;
SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+connection node_1;
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
DROP TABLE t1;
COMMIT;
+SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been shut down cleanly and restarted
connection node_1;
-CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (1,'node1_committed_before');
-INSERT INTO t1 VALUES (2,'node1_committed_before');
-INSERT INTO t1 VALUES (3,'node1_committed_before');
-INSERT INTO t1 VALUES (4,'node1_committed_before');
-INSERT INTO t1 VALUES (5,'node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (6,'node2_committed_before');
-INSERT INTO t1 VALUES (7,'node2_committed_before');
-INSERT INTO t1 VALUES (8,'node2_committed_before');
-INSERT INTO t1 VALUES (9,'node2_committed_before');
-INSERT INTO t1 VALUES (10,'node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Shutting down server ...
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (11,'node1_committed_during');
-INSERT INTO t1 VALUES (12,'node1_committed_during');
-INSERT INTO t1 VALUES (13,'node1_committed_during');
-INSERT INTO t1 VALUES (14,'node1_committed_during');
-INSERT INTO t1 VALUES (15,'node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
COMMIT;
START TRANSACTION;
-INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
connection node_2;
Starting server ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (26,'node2_committed_after');
-INSERT INTO t1 VALUES (27,'node2_committed_after');
-INSERT INTO t1 VALUES (28,'node2_committed_after');
-INSERT INTO t1 VALUES (29,'node2_committed_after');
-INSERT INTO t1 VALUES (30,'node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
connection node_1;
-INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
COMMIT;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (36,'node1_committed_after');
-INSERT INTO t1 VALUES (37,'node1_committed_after');
-INSERT INTO t1 VALUES (38,'node1_committed_after');
-INSERT INTO t1 VALUES (39,'node1_committed_after');
-INSERT INTO t1 VALUES (40,'node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
connection node_1a_galera_st_shutdown_slave;
-INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
ROLLBACK;
-SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_15 FROM t1;
-EXPECT_15
-35
-SELECT * from t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
COMMIT;
-connection node_1;
SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_15 FROM t1;
-EXPECT_15
-35
-SELECT * from t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+connection node_1;
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
DROP TABLE t1;
COMMIT;
+SET AUTOCOMMIT=ON;
Performing State Transfer on a server that has been killed and restarted
connection node_1;
-CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB;
+CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (1,'node1_committed_before');
-INSERT INTO t1 VALUES (2,'node1_committed_before');
-INSERT INTO t1 VALUES (3,'node1_committed_before');
-INSERT INTO t1 VALUES (4,'node1_committed_before');
-INSERT INTO t1 VALUES (5,'node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
+INSERT INTO t1 VALUES ('node1_committed_before');
COMMIT;
connection node_2;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (6,'node2_committed_before');
-INSERT INTO t1 VALUES (7,'node2_committed_before');
-INSERT INTO t1 VALUES (8,'node2_committed_before');
-INSERT INTO t1 VALUES (9,'node2_committed_before');
-INSERT INTO t1 VALUES (10,'node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
+INSERT INTO t1 VALUES ('node2_committed_before');
COMMIT;
Killing server ...
connection node_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (11,'node1_committed_during');
-INSERT INTO t1 VALUES (12,'node1_committed_during');
-INSERT INTO t1 VALUES (13,'node1_committed_during');
-INSERT INTO t1 VALUES (14,'node1_committed_during');
-INSERT INTO t1 VALUES (15,'node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
+INSERT INTO t1 VALUES ('node1_committed_during');
COMMIT;
START TRANSACTION;
-INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (20,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
connection node_2;
Performing --wsrep-recover ...
Starting server ...
Using --wsrep-start-position when starting mysqld ...
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (26,'node2_committed_after');
-INSERT INTO t1 VALUES (27,'node2_committed_after');
-INSERT INTO t1 VALUES (28,'node2_committed_after');
-INSERT INTO t1 VALUES (29,'node2_committed_after');
-INSERT INTO t1 VALUES (30,'node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
+INSERT INTO t1 VALUES ('node2_committed_after');
COMMIT;
connection node_1;
-INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
-INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
+INSERT INTO t1 VALUES ('node1_to_be_committed_after');
COMMIT;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
-INSERT INTO t1 VALUES (36,'node1_committed_after');
-INSERT INTO t1 VALUES (37,'node1_committed_after');
-INSERT INTO t1 VALUES (38,'node1_committed_after');
-INSERT INTO t1 VALUES (39,'node1_committed_after');
-INSERT INTO t1 VALUES (40,'node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
+INSERT INTO t1 VALUES ('node1_committed_after');
COMMIT;
connection node_1a_galera_st_kill_slave;
-INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
-INSERT INTO t1 VALUES (46,'node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
+INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
ROLLBACK;
-SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
COMMIT;
-connection node_1;
SET AUTOCOMMIT=ON;
-SET SESSION wsrep_sync_wait=15;
-SELECT COUNT(*) AS EXPECT_35 FROM t1;
-EXPECT_35
-35
-SELECT * FROM t1;
-id f1
-1 node1_committed_before
-2 node1_committed_before
-3 node1_committed_before
-4 node1_committed_before
-5 node1_committed_before
-6 node2_committed_before
-7 node2_committed_before
-8 node2_committed_before
-9 node2_committed_before
-10 node2_committed_before
-11 node1_committed_during
-12 node1_committed_during
-13 node1_committed_during
-14 node1_committed_during
-15 node1_committed_during
-16 node1_to_be_committed_after
-17 node1_to_be_committed_after
-18 node1_to_be_committed_after
-19 node1_to_be_committed_after
-20 node1_to_be_committed_after
-26 node2_committed_after
-27 node2_committed_after
-28 node2_committed_after
-29 node2_committed_after
-30 node2_committed_after
-31 node1_to_be_committed_after
-32 node1_to_be_committed_after
-33 node1_to_be_committed_after
-34 node1_to_be_committed_after
-35 node1_to_be_committed_after
-36 node1_committed_after
-37 node1_committed_after
-38 node1_committed_after
-39 node1_committed_after
-40 node1_committed_after
+connection node_1;
+SELECT COUNT(*) = 35 FROM t1;
+COUNT(*) = 35
+1
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
COUNT(*) = 0
1
DROP TABLE t1;
COMMIT;
+SET AUTOCOMMIT=ON;
diff --git a/mysql-test/suite/galera/r/galera_sequences.result b/mysql-test/suite/galera/r/galera_sequences.result
index 48593d2a258..7276cb8dbde 100644
--- a/mysql-test/suite/galera/r/galera_sequences.result
+++ b/mysql-test/suite/galera/r/galera_sequences.result
@@ -44,6 +44,9 @@ Table Create Table
Seq1_1 CREATE SEQUENCE `Seq1_1` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
select NEXT VALUE FOR Seq1_1;
NEXT VALUE FOR Seq1_1
-1
+3001
connection node_1;
DROP SEQUENCE Seq1_1;
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+connection node_2;
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
diff --git a/mysql-test/suite/galera/t/MDEV-18832.test b/mysql-test/suite/galera/t/MDEV-18832.test
index e2f1b2afd45..ba93761435a 100644
--- a/mysql-test/suite/galera/t/MDEV-18832.test
+++ b/mysql-test/suite/galera/t/MDEV-18832.test
@@ -13,3 +13,11 @@ CREATE SEQUENCE Seq1_1 START WITH 1 INCREMENT BY 1;
INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1);
DROP SEQUENCE Seq1_1;
DROP TABLE t1;
+
+# Supress warning for SEQUENCES that are declared without `NOCACHE` introduced with MDEV-27862
+
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+
+--connection node_2
+
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
diff --git a/mysql-test/suite/galera/t/MDEV-27862.combinations b/mysql-test/suite/galera/t/MDEV-27862.combinations
new file mode 100644
index 00000000000..1eeb8fb4614
--- /dev/null
+++ b/mysql-test/suite/galera/t/MDEV-27862.combinations
@@ -0,0 +1,4 @@
+[binlogoff]
+
+[binlogon]
+log-bin
diff --git a/mysql-test/suite/galera/t/MDEV-27862.test b/mysql-test/suite/galera/t/MDEV-27862.test
new file mode 100644
index 00000000000..89d3465b91f
--- /dev/null
+++ b/mysql-test/suite/galera/t/MDEV-27862.test
@@ -0,0 +1,67 @@
+--source include/galera_cluster.inc
+--source include/have_innodb.inc
+
+# Report WARNING when SEQUENCE is created without `NOCACHE`
+
+CREATE SEQUENCE seq_nocache ENGINE=InnoDB;
+DROP SEQUENCE seq_nocache;
+
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+
+--connection node_2
+
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+
+# NEXTVAL
+
+--connection node_1
+
+CREATE SEQUENCE seq NOCACHE ENGINE=InnoDB;
+
+SELECT NEXTVAL(seq) = 1;
+
+--connection node_2
+
+SELECT NEXTVAL(seq) = 2;
+
+--connection node_1
+
+SELECT NEXTVAL(seq) = 3;
+
+
+# SETVAL
+
+SELECT SETVAL(seq, 100);
+
+--connection node_2
+
+SELECT NEXTVAL(seq) = 101;
+
+--connection node_1
+
+SELECT NEXTVAL(seq) = 102;
+
+DROP SEQUENCE seq;
+
+# TRANSACTIONS
+
+CREATE TABLE t1(f1 INT);
+CREATE SEQUENCE seq_transaction NOCACHE ENGINE=InnoDB;
+
+START TRANSACTION;
+INSERT INTO t1 VALUES (0);
+SELECT NEXTVAL(seq_transaction);
+INSERT INTO t1 VALUES (NEXTVAL(seq_transaction));
+COMMIT;
+
+--connection node_2
+
+SELECT COUNT(*) = 2 FROM t1;
+SELECT NEXTVAL(seq_transaction) = 3;
+
+--connection node_1
+SELECT NEXTVAL(seq_transaction) = 4;
+
+DROP SEQUENCE seq_transaction;
+DROP TABLE t1;
+
diff --git a/mysql-test/suite/galera/t/galera_sequences.test b/mysql-test/suite/galera/t/galera_sequences.test
index 480366f6a6f..d469cc73516 100644
--- a/mysql-test/suite/galera/t/galera_sequences.test
+++ b/mysql-test/suite/galera/t/galera_sequences.test
@@ -44,3 +44,9 @@ select NEXT VALUE FOR Seq1_1;
--connection node_1
DROP SEQUENCE Seq1_1;
+
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+
+--connection node_2
+
+CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
diff --git a/mysql-test/suite/innodb_fts/r/fulltext.result b/mysql-test/suite/innodb_fts/r/fulltext.result
index b2ac4957e38..4aec88991cb 100644
--- a/mysql-test/suite/innodb_fts/r/fulltext.result
+++ b/mysql-test/suite/innodb_fts/r/fulltext.result
@@ -716,4 +716,18 @@ t1 CREATE TABLE `t1` (
FULLTEXT KEY `a_2` (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;
+#
+# MDEV-25257 SEGV in fts_get_next_doc_id upon some INSERT
+#
+SET @save = @@global.innodb_file_per_table;
+SET @@global.innodb_file_per_table = 0;
+CREATE TABLE t1 (
+col_int INTEGER, col_text TEXT,
+col_int_g INTEGER GENERATED ALWAYS AS (col_int)
+) ENGINE = InnoDB ROW_FORMAT = Redundant ;
+ALTER TABLE t1 ADD FULLTEXT KEY `ftidx` ( col_text ) ;
+ALTER TABLE t1 DROP KEY `ftidx` ;
+INSERT INTO t1 (col_int, col_text) VALUES ( 1255, NULL);
+DROP TABLE t1;
+SET @@global.innodb_file_per_table = @save;
# End of 10.3 tests
diff --git a/mysql-test/suite/innodb_fts/t/fulltext.test b/mysql-test/suite/innodb_fts/t/fulltext.test
index 18baf56281f..4b73e2ea15b 100644
--- a/mysql-test/suite/innodb_fts/t/fulltext.test
+++ b/mysql-test/suite/innodb_fts/t/fulltext.test
@@ -743,4 +743,20 @@ SHOW CREATE TABLE t1;
DROP TABLE t1;
--enable_warnings
+--echo #
+--echo # MDEV-25257 SEGV in fts_get_next_doc_id upon some INSERT
+--echo #
+SET @save = @@global.innodb_file_per_table;
+SET @@global.innodb_file_per_table = 0;
+
+CREATE TABLE t1 (
+ col_int INTEGER, col_text TEXT,
+ col_int_g INTEGER GENERATED ALWAYS AS (col_int)
+) ENGINE = InnoDB ROW_FORMAT = Redundant ;
+ALTER TABLE t1 ADD FULLTEXT KEY `ftidx` ( col_text ) ;
+ALTER TABLE t1 DROP KEY `ftidx` ;
+INSERT INTO t1 (col_int, col_text) VALUES ( 1255, NULL);
+DROP TABLE t1;
+SET @@global.innodb_file_per_table = @save;
+
--echo # End of 10.3 tests
diff --git a/scripts/wsrep_sst_mariabackup.sh b/scripts/wsrep_sst_mariabackup.sh
index a3fc4b78718..a66a792b5ea 100644
--- a/scripts/wsrep_sst_mariabackup.sh
+++ b/scripts/wsrep_sst_mariabackup.sh
@@ -86,7 +86,6 @@ encrypt_threads=""
encrypt_chunk=""
readonly SECRET_TAG='secret'
-readonly TOTAL_TAG='secret /total'
# Required for backup locks
# For backup locks it is 1 sent by joiner
@@ -419,7 +418,7 @@ get_transfer()
get_footprint()
{
- pushd "$WSREP_SST_OPT_DATA" 1>/dev/null
+ cd "$DATA_DIR"
payload=$(find . -regex '.*\.ibd$\|.*\.MYI$\|.*\.MYD$\|.*ibdata1$' \
-type f -print0 | du --files0-from=- --block-size=1 -c -s | \
awk 'END { print $1 }')
@@ -428,7 +427,7 @@ get_footprint()
# When compression/compaction used, the progress is only an approximate.
payload=$(( payload*1/2 ))
fi
- popd 1>/dev/null
+ cd "$OLD_PWD"
pcmd="$pcmd -s $payload"
adjust_progress
}
diff --git a/sql/ha_sequence.cc b/sql/ha_sequence.cc
index 2447242593c..b348e6e7025 100644
--- a/sql/ha_sequence.cc
+++ b/sql/ha_sequence.cc
@@ -452,6 +452,9 @@ static int sequence_initialize(void *p)
HTON_HIDDEN |
HTON_TEMPORARY_NOT_SUPPORTED |
HTON_ALTER_NOT_SUPPORTED |
+#ifdef WITH_WSREP
+ HTON_WSREP_REPLICATION |
+#endif
HTON_NO_PARTITION);
DBUG_RETURN(0);
}
diff --git a/sql/log.cc b/sql/log.cc
index b6e7e644567..a92b180a9a7 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -2147,7 +2147,13 @@ static int binlog_commit(handlerton *hton, THD *thd, bool all)
thd->backup_stage(&org_stage);
THD_STAGE_INFO(thd, stage_binlog_write);
+#ifdef WITH_WSREP
+ // DON'T clear stmt cache in case we are in transaction
+ if (!cache_mngr->stmt_cache.empty() &&
+ (!wsrep_on(thd) || ending_trans(thd, all)))
+#else
if (!cache_mngr->stmt_cache.empty())
+#endif
{
error= binlog_commit_flush_stmt_cache(thd, all, cache_mngr);
}
@@ -11013,13 +11019,13 @@ maria_declare_plugin_end;
#ifdef WITH_WSREP
#include "wsrep_mysqld.h"
-IO_CACHE *wsrep_get_trans_cache(THD * thd)
+IO_CACHE *wsrep_get_cache(THD * thd, bool is_transactional)
{
DBUG_ASSERT(binlog_hton->slot != HA_SLOT_UNDEF);
binlog_cache_mngr *cache_mngr = (binlog_cache_mngr*)
thd_get_ha_data(thd, binlog_hton);
if (cache_mngr)
- return cache_mngr->get_binlog_cache_log(true);
+ return cache_mngr->get_binlog_cache_log(is_transactional);
WSREP_DEBUG("binlog cache not initialized, conn: %llu",
thd->thread_id);
diff --git a/sql/log.h b/sql/log.h
index 584b63879de..e4a4d9c2fb2 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -1247,7 +1247,7 @@ static inline TC_LOG *get_tc_log_implementation()
}
#ifdef WITH_WSREP
-IO_CACHE* wsrep_get_trans_cache(THD *);
+IO_CACHE* wsrep_get_cache(THD *, bool);
void wsrep_thd_binlog_trx_reset(THD * thd);
void wsrep_thd_binlog_stmt_rollback(THD * thd);
#endif /* WITH_WSREP */
diff --git a/sql/partition_info.cc b/sql/partition_info.cc
index bb511b0020c..959dd674101 100644
--- a/sql/partition_info.cc
+++ b/sql/partition_info.cc
@@ -884,10 +884,12 @@ void partition_info::vers_check_limit(THD *thd)
bitmap_set_all(), but this is not optimal since there can be quite a number
of partitions.
*/
+#ifndef DBUG_OFF
const uint32 sub_factor= num_subparts ? num_subparts : 1;
uint32 part_id= vers_info->hist_part->id * sub_factor;
const uint32 part_id_end= part_id + sub_factor;
DBUG_ASSERT(part_id_end <= num_parts * sub_factor);
+#endif
ha_partition *hp= (ha_partition*)(table->file);
ha_rows hist_rows= hp->part_records(vers_info->hist_part);
diff --git a/sql/sql_partition_admin.cc b/sql/sql_partition_admin.cc
index 058e5909a25..3a22c9f6201 100644
--- a/sql/sql_partition_admin.cc
+++ b/sql/sql_partition_admin.cc
@@ -568,6 +568,14 @@ bool Sql_cmd_alter_table_exchange_partition::
part_table= table_list->table;
swap_table= swap_table_list->table;
+ /* Don't allow to exchange with a VIEW */
+ if (unlikely(swap_table_list->view))
+ {
+ my_error(ER_WRONG_OBJECT, MYF(0), table_list->db.str,
+ swap_table_list->table_name.str, "BASE TABLE");
+ DBUG_RETURN(TRUE);
+ }
+
if (unlikely(check_exchange_partition(swap_table, part_table)))
DBUG_RETURN(TRUE);
diff --git a/sql/sql_sequence.cc b/sql/sql_sequence.cc
index 7ef30641888..07571c3bbac 100644
--- a/sql/sql_sequence.cc
+++ b/sql/sql_sequence.cc
@@ -309,6 +309,11 @@ bool sequence_insert(THD *thd, LEX *lex, TABLE_LIST *org_table_list)
DBUG_RETURN(TRUE);
}
+#ifdef WITH_WSREP
+ if (WSREP_ON && seq->cache != 0)
+ WSREP_WARN("CREATE SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+#endif
+
/* If not temporary table */
if (!temporary_table)
{
@@ -901,12 +906,18 @@ bool Sql_cmd_alter_sequence::execute(THD *thd)
No_such_table_error_handler no_such_table_handler;
DBUG_ENTER("Sql_cmd_alter_sequence::execute");
+
if (check_access(thd, ALTER_ACL, first_table->db.str,
&first_table->grant.privilege,
&first_table->grant.m_internal,
0, 0))
DBUG_RETURN(TRUE); /* purecov: inspected */
+#ifdef WITH_WSREP
+ if (WSREP_ON && new_seq->cache != 0)
+ WSREP_WARN("ALTER SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
+#endif
+
if (check_grant(thd, ALTER_ACL, first_table, FALSE, 1, FALSE))
DBUG_RETURN(TRUE); /* purecov: inspected */
diff --git a/sql/table.h b/sql/table.h
index dbdeefafdb7..8a9b4c46a47 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -1,7 +1,7 @@
#ifndef TABLE_INCLUDED
#define TABLE_INCLUDED
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
- Copyright (c) 2009, 2021, MariaDB
+ Copyright (c) 2009, 2022, MariaDB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -3171,9 +3171,6 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
bool is_create_table,
List<String> *partitions_to_open= NULL);
bool copy_keys_from_share(TABLE *outparam, MEM_ROOT *root);
-bool fix_session_vcol_expr(THD *thd, Virtual_column_info *vcol);
-bool fix_session_vcol_expr_for_read(THD *thd, Field *field,
- Virtual_column_info *vcol);
bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
bool *error_reported, vcol_init_mode expr);
TABLE_SHARE *alloc_table_share(const char *db, const char *table_name,
diff --git a/sql/wsrep_binlog.cc b/sql/wsrep_binlog.cc
index 3fe0792d83e..bcc5d2fe46d 100644
--- a/sql/wsrep_binlog.cc
+++ b/sql/wsrep_binlog.cc
@@ -155,10 +155,10 @@ static int wsrep_write_cache_inc(THD* const thd,
goto cleanup;
cache->read_pos= cache->read_end;
} while ((cache->file >= 0) && (length= my_b_fill(cache)));
- }
- if (ret == 0)
- {
- assert(total_length + thd->wsrep_sr().log_position() == saved_pos);
+ if (ret == 0)
+ {
+ assert(total_length + thd->wsrep_sr().log_position() == saved_pos);
+ }
}
cleanup:
diff --git a/sql/wsrep_client_service.cc b/sql/wsrep_client_service.cc
index b7107178717..869234de491 100644
--- a/sql/wsrep_client_service.cc
+++ b/sql/wsrep_client_service.cc
@@ -85,18 +85,37 @@ int Wsrep_client_service::prepare_data_for_replication()
DBUG_ASSERT(m_thd == current_thd);
DBUG_ENTER("Wsrep_client_service::prepare_data_for_replication");
size_t data_len= 0;
- IO_CACHE* cache= wsrep_get_trans_cache(m_thd);
+ IO_CACHE* transactional_cache= wsrep_get_cache(m_thd, true);
+ IO_CACHE* stmt_cache= wsrep_get_cache(m_thd, false);
- if (cache)
+ if (transactional_cache || stmt_cache)
{
m_thd->binlog_flush_pending_rows_event(true);
- if (wsrep_write_cache(m_thd, cache, &data_len))
+
+ size_t transactional_data_len= 0;
+ size_t stmt_data_len= 0;
+
+ // Write transactional cache
+ if (transactional_cache &&
+ wsrep_write_cache(m_thd, transactional_cache, &transactional_data_len))
{
WSREP_ERROR("rbr write fail, data_len: %zu",
data_len);
// wsrep_override_error(m_thd, ER_ERROR_DURING_COMMIT);
DBUG_RETURN(1);
}
+
+ // Write stmt cache
+ if (stmt_cache && wsrep_write_cache(m_thd, stmt_cache, &stmt_data_len))
+ {
+ WSREP_ERROR("rbr write fail, data_len: %zu",
+ data_len);
+ // wsrep_override_error(m_thd, ER_ERROR_DURING_COMMIT);
+ DBUG_RETURN(1);
+ }
+
+ // Complete data written from both caches
+ data_len = transactional_data_len + stmt_data_len;
}
if (data_len == 0)
@@ -138,7 +157,7 @@ int Wsrep_client_service::prepare_fragment_for_replication(
DBUG_ASSERT(m_thd == current_thd);
THD* thd= m_thd;
DBUG_ENTER("Wsrep_client_service::prepare_fragment_for_replication");
- IO_CACHE* cache= wsrep_get_trans_cache(thd);
+ IO_CACHE* cache= wsrep_get_cache(thd, true);
thd->binlog_flush_pending_rows_event(true);
if (!cache)
@@ -220,7 +239,7 @@ bool Wsrep_client_service::statement_allowed_for_streaming() const
size_t Wsrep_client_service::bytes_generated() const
{
- IO_CACHE* cache= wsrep_get_trans_cache(m_thd);
+ IO_CACHE* cache= wsrep_get_cache(m_thd, true);
if (cache)
{
size_t pending_rows_event_length= 0;
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 4c74d22c325..c20ebead8d6 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -650,7 +650,7 @@ static std::string wsrep_server_incoming_address()
bool is_ipv6= false;
unsigned int my_bind_ip= INADDR_ANY; // default if not set
- if (my_bind_addr_str && strlen(my_bind_addr_str) &&
+ if (my_bind_addr_str && strlen(my_bind_addr_str) &&
strcmp(my_bind_addr_str, "*") != 0)
{
my_bind_ip= wsrep_check_ip(my_bind_addr_str, &is_ipv6);
@@ -715,9 +715,13 @@ static std::string wsrep_server_incoming_address()
snprintf(inc_addr, inc_addr_max, fmt, addr.get_address(), port);
}
-
+
done:
- ret= wsrep_node_incoming_address;
+ if (!strlen(inc_addr))
+ ret= wsrep_node_incoming_address;
+ else
+ ret= inc_addr;
+ WSREP_DEBUG("wsrep_incoming_address = %s", ret.c_str());
return ret;
}
diff --git a/storage/connect/tabmysql.cpp b/storage/connect/tabmysql.cpp
index fb5d1b35bc2..464b94a7cbd 100644
--- a/storage/connect/tabmysql.cpp
+++ b/storage/connect/tabmysql.cpp
@@ -946,15 +946,6 @@ bool TDBMYSQL::OpenDB(PGLOBAL g)
} // endif MakeInsert
- if (m_Rc != RC_FX) {
- char cmd[64];
- int w;
-
- sprintf(cmd, "ALTER TABLE `%s` DISABLE KEYS", TableName);
-
- m_Rc = Myc.ExecSQL(g, cmd, &w); // may fail for some engines
- } // endif m_Rc
-
} else
// m_Rc = (Mode == MODE_DELETE) ? MakeDelete(g) : MakeUpdate(g);
m_Rc = (MakeCommand(g)) ? RC_FX : RC_OK;
@@ -1216,16 +1207,6 @@ int TDBMYSQL::DeleteDB(PGLOBAL g, int irc)
void TDBMYSQL::CloseDB(PGLOBAL g)
{
if (Myc.Connected()) {
- if (Mode == MODE_INSERT) {
- char cmd[64];
- int w;
- PDBUSER dup = PlgGetUser(g);
-
- dup->Step = "Enabling indexes";
- sprintf(cmd, "ALTER TABLE `%s` ENABLE KEYS", TableName);
- Myc.m_Rows = -1; // To execute the query
- m_Rc = Myc.ExecSQL(g, cmd, &w); // May fail for some engines
- } // endif m_Rc
Myc.Close();
} // endif Myc
diff --git a/storage/innobase/dict/dict0load.cc b/storage/innobase/dict/dict0load.cc
index a9b810b9aca..15afbc0401f 100644
--- a/storage/innobase/dict/dict0load.cc
+++ b/storage/innobase/dict/dict0load.cc
@@ -1842,6 +1842,7 @@ dict_load_columns(
the flag is set before the table is created. */
if (table->fts == NULL) {
table->fts = fts_create(table);
+ table->fts->cache = fts_cache_create(table);
}
ut_a(table->fts->doc_col == ULINT_UNDEFINED);
diff --git a/storage/innobase/os/os0file.cc b/storage/innobase/os/os0file.cc
index 42589b3319a..902642bbfec 100644
--- a/storage/innobase/os/os0file.cc
+++ b/storage/innobase/os/os0file.cc
@@ -858,6 +858,7 @@ os_file_get_last_error_low(
case EXDEV:
case ENOTDIR:
case EISDIR:
+ case EPERM:
return(OS_FILE_PATH_ERROR);
case EAGAIN:
if (srv_use_native_aio) {
diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c
index 0725959841b..31884e7de50 100644
--- a/storage/maria/ma_loghandler.c
+++ b/storage/maria/ma_loghandler.c
@@ -7996,22 +7996,14 @@ void translog_flush_buffers(TRANSLOG_ADDRESS *lsn,
}
else
{
- if (log_descriptor.bc.buffer->last_lsn == LSN_IMPOSSIBLE)
+ if (log_descriptor.bc.buffer->last_lsn == LSN_IMPOSSIBLE &&
+ log_descriptor.bc.buffer->prev_last_lsn == LSN_IMPOSSIBLE)
{
- /*
- In this case both last_lsn & prev_last_lsn are LSN_IMPOSSIBLE
- otherwise it will go in the first IF because LSN_IMPOSSIBLE less
- then any real LSN and cmp_translog_addr(*lsn,
- log_descriptor.bc.buffer->prev_last_lsn) will be TRUE
- */
- DBUG_ASSERT(log_descriptor.bc.buffer->prev_last_lsn ==
- LSN_IMPOSSIBLE);
DBUG_PRINT("info", ("There is no LSNs yet generated => do nothing"));
translog_unlock();
DBUG_VOID_RETURN;
}
- DBUG_ASSERT(log_descriptor.bc.buffer->prev_last_lsn != LSN_IMPOSSIBLE);
/* fix lsn if it was horizon */
*lsn= log_descriptor.bc.buffer->prev_last_lsn;
DBUG_PRINT("info", ("LSN to flush fixed to prev last lsn: " LSN_FMT,