mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 10.3 into 10.4
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2001, 2012, Oracle and/or its affiliates.
|
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
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -102,6 +102,7 @@ enum options_client
|
|||||||
OPT_IGNORE_DATA,
|
OPT_IGNORE_DATA,
|
||||||
OPT_PRINT_ROW_COUNT, OPT_PRINT_ROW_EVENT_POSITIONS,
|
OPT_PRINT_ROW_COUNT, OPT_PRINT_ROW_EVENT_POSITIONS,
|
||||||
OPT_CHECK_IF_UPGRADE_NEEDED,
|
OPT_CHECK_IF_UPGRADE_NEEDED,
|
||||||
|
OPT_COMPATIBILTY_CLEARTEXT_PLUGIN,
|
||||||
OPT_SHUTDOWN_WAIT_FOR_SLAVES,
|
OPT_SHUTDOWN_WAIT_FOR_SLAVES,
|
||||||
OPT_MAX_CLIENT_OPTION /* should be always the last */
|
OPT_MAX_CLIENT_OPTION /* should be always the last */
|
||||||
};
|
};
|
||||||
|
@ -1514,6 +1514,8 @@ static struct my_option my_long_options[] =
|
|||||||
&delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
&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,
|
{"execute", 'e', "Execute command and quit. (Disables --force and history file.)", 0,
|
||||||
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 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", 'E', "Print the output of a query (rows) vertically.",
|
||||||
&vertical, &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
|
&vertical, &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
|
||||||
0},
|
0},
|
||||||
@ -1813,6 +1815,14 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
printf("WARNING: --server-arg option not supported in this configuration.\n");
|
printf("WARNING: --server-arg option not supported in this configuration.\n");
|
||||||
#endif
|
#endif
|
||||||
break;
|
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':
|
case 'A':
|
||||||
opt_rehash= 0;
|
opt_rehash= 0;
|
||||||
break;
|
break;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/******************************************************
|
/******************************************************
|
||||||
Copyright (c) 2011-2013 Percona LLC and/or its affiliates.
|
Copyright (c) 2011-2013 Percona LLC and/or its affiliates.
|
||||||
|
Copyright (c) 2022, MariaDB Corporation.
|
||||||
|
|
||||||
Compressing datasink implementation for XtraBackup.
|
Compressing datasink implementation for XtraBackup.
|
||||||
|
|
||||||
@ -32,11 +33,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
pthread_t id;
|
pthread_t id;
|
||||||
uint num;
|
uint num;
|
||||||
pthread_mutex_t ctrl_mutex;
|
|
||||||
pthread_cond_t ctrl_cond;
|
|
||||||
pthread_mutex_t data_mutex;
|
pthread_mutex_t data_mutex;
|
||||||
pthread_cond_t data_cond;
|
pthread_cond_t data_cond;
|
||||||
my_bool started;
|
|
||||||
my_bool data_avail;
|
my_bool data_avail;
|
||||||
my_bool cancelled;
|
my_bool cancelled;
|
||||||
const char *from;
|
const char *from;
|
||||||
@ -208,14 +206,13 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
|
|||||||
|
|
||||||
thd = threads + i;
|
thd = threads + i;
|
||||||
|
|
||||||
pthread_mutex_lock(&thd->ctrl_mutex);
|
pthread_mutex_lock(&thd->data_mutex);
|
||||||
|
|
||||||
chunk_len = (len > COMPRESS_CHUNK_SIZE) ?
|
chunk_len = (len > COMPRESS_CHUNK_SIZE) ?
|
||||||
COMPRESS_CHUNK_SIZE : len;
|
COMPRESS_CHUNK_SIZE : len;
|
||||||
thd->from = ptr;
|
thd->from = ptr;
|
||||||
thd->from_len = chunk_len;
|
thd->from_len = chunk_len;
|
||||||
|
|
||||||
pthread_mutex_lock(&thd->data_mutex);
|
|
||||||
thd->data_avail = TRUE;
|
thd->data_avail = TRUE;
|
||||||
pthread_cond_signal(&thd->data_cond);
|
pthread_cond_signal(&thd->data_cond);
|
||||||
pthread_mutex_unlock(&thd->data_mutex);
|
pthread_mutex_unlock(&thd->data_mutex);
|
||||||
@ -241,26 +238,24 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
|
|||||||
|
|
||||||
xb_a(threads[i].to_len > 0);
|
xb_a(threads[i].to_len > 0);
|
||||||
|
|
||||||
if (ds_write(dest_file, "NEWBNEWB", 8) ||
|
bool fail = ds_write(dest_file, "NEWBNEWB", 8) ||
|
||||||
write_uint64_le(dest_file,
|
write_uint64_le(dest_file,
|
||||||
comp_file->bytes_processed)) {
|
comp_file->bytes_processed);
|
||||||
msg("compress: write to the destination stream "
|
|
||||||
"failed.");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
comp_file->bytes_processed += threads[i].from_len;
|
comp_file->bytes_processed += threads[i].from_len;
|
||||||
|
|
||||||
if (write_uint32_le(dest_file, threads[i].adler) ||
|
if (!fail) {
|
||||||
|
fail = write_uint32_le(dest_file, threads[i].adler) ||
|
||||||
ds_write(dest_file, threads[i].to,
|
ds_write(dest_file, threads[i].to,
|
||||||
threads[i].to_len)) {
|
threads[i].to_len);
|
||||||
msg("compress: write to the destination stream "
|
|
||||||
"failed.");
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&threads[i].data_mutex);
|
pthread_mutex_unlock(&threads[i].data_mutex);
|
||||||
pthread_mutex_unlock(&threads[i].ctrl_mutex);
|
|
||||||
|
if (fail) {
|
||||||
|
msg("compress: write to the destination stream "
|
||||||
|
"failed.");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -330,6 +325,23 @@ write_uint64_le(ds_file_t *file, ulonglong n)
|
|||||||
return ds_write(file, tmp, sizeof(tmp));
|
return ds_write(file, tmp, sizeof(tmp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
static
|
||||||
comp_thread_ctxt_t *
|
comp_thread_ctxt_t *
|
||||||
create_worker_threads(uint n)
|
create_worker_threads(uint n)
|
||||||
@ -344,7 +356,6 @@ create_worker_threads(uint n)
|
|||||||
comp_thread_ctxt_t *thd = threads + i;
|
comp_thread_ctxt_t *thd = threads + i;
|
||||||
|
|
||||||
thd->num = i + 1;
|
thd->num = i + 1;
|
||||||
thd->started = FALSE;
|
|
||||||
thd->cancelled = FALSE;
|
thd->cancelled = FALSE;
|
||||||
thd->data_avail = FALSE;
|
thd->data_avail = FALSE;
|
||||||
|
|
||||||
@ -352,46 +363,25 @@ create_worker_threads(uint n)
|
|||||||
MY_QLZ_COMPRESS_OVERHEAD,
|
MY_QLZ_COMPRESS_OVERHEAD,
|
||||||
MYF(MY_FAE));
|
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 */
|
/* Initialize and data mutex and condition var */
|
||||||
if (pthread_mutex_init(&thd->data_mutex, NULL) ||
|
if (pthread_mutex_init(&thd->data_mutex, NULL) ||
|
||||||
pthread_cond_init(&thd->data_cond, NULL)) {
|
pthread_cond_init(&thd->data_cond, NULL)) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_lock(&thd->ctrl_mutex);
|
|
||||||
|
|
||||||
if (pthread_create(&thd->id, NULL, compress_worker_thread_func,
|
if (pthread_create(&thd->id, NULL, compress_worker_thread_func,
|
||||||
thd)) {
|
thd)) {
|
||||||
msg("compress: pthread_create() failed: "
|
msg("compress: pthread_create() failed: "
|
||||||
"errno = %d", errno);
|
"errno = %d", errno);
|
||||||
pthread_mutex_unlock(&thd->ctrl_mutex);
|
|
||||||
goto err;
|
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;
|
return threads;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
while (i > 0) {
|
for (; i; i--) {
|
||||||
comp_thread_ctxt_t *thd;
|
destroy_worker_thread(threads + i);
|
||||||
i--;
|
|
||||||
thd = threads + i;
|
|
||||||
pthread_mutex_unlock(&thd->ctrl_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
my_free(threads);
|
my_free(threads);
|
||||||
@ -405,21 +395,7 @@ destroy_worker_threads(comp_thread_ctxt_t *threads, uint n)
|
|||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
comp_thread_ctxt_t *thd = threads + i;
|
destroy_worker_thread(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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
my_free(threads);
|
my_free(threads);
|
||||||
@ -431,19 +407,9 @@ compress_worker_thread_func(void *arg)
|
|||||||
{
|
{
|
||||||
comp_thread_ctxt_t *thd = (comp_thread_ctxt_t *) arg;
|
comp_thread_ctxt_t *thd = (comp_thread_ctxt_t *) arg;
|
||||||
|
|
||||||
pthread_mutex_lock(&thd->ctrl_mutex);
|
|
||||||
|
|
||||||
pthread_mutex_lock(&thd->data_mutex);
|
pthread_mutex_lock(&thd->data_mutex);
|
||||||
|
|
||||||
thd->started = TRUE;
|
|
||||||
pthread_cond_signal(&thd->ctrl_cond);
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&thd->ctrl_mutex);
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
thd->data_avail = FALSE;
|
|
||||||
pthread_cond_signal(&thd->data_cond);
|
|
||||||
|
|
||||||
while (!thd->data_avail && !thd->cancelled) {
|
while (!thd->data_avail && !thd->cancelled) {
|
||||||
pthread_cond_wait(&thd->data_cond, &thd->data_mutex);
|
pthread_cond_wait(&thd->data_cond, &thd->data_mutex);
|
||||||
}
|
}
|
||||||
|
15
man/mysql.1
15
man/mysql.1
@ -507,6 +507,21 @@ the section called \(lqMYSQL COMMANDS\(rq\&.
|
|||||||
.sp -1
|
.sp -1
|
||||||
.IP \(bu 2.3
|
.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
|
.\" mysql: execute option
|
||||||
.\" execute option: mysql
|
.\" execute option: mysql
|
||||||
\fB\-\-execute=\fR\fB\fIstatement\fR\fR,
|
\fB\-\-execute=\fR\fB\fIstatement\fR\fR,
|
||||||
|
@ -630,3 +630,6 @@ drop table t1;
|
|||||||
# MDEV-15538 '-N' Produce html output wrong
|
# MDEV-15538 '-N' Produce html output wrong
|
||||||
#
|
#
|
||||||
<TABLE BORDER=1><TR><TD>1</TD></TR></TABLE>
|
<TABLE BORDER=1><TR><TD>1</TD></TR></TABLE>
|
||||||
|
WARNING: option '--enable-cleartext-plugin' is obsolete.
|
||||||
|
1
|
||||||
|
1
|
||||||
|
@ -708,3 +708,11 @@ drop table t1;
|
|||||||
--echo # MDEV-15538 '-N' Produce html output wrong
|
--echo # MDEV-15538 '-N' Produce html output wrong
|
||||||
--echo #
|
--echo #
|
||||||
--exec $MYSQL -NHe "select 1 as a"
|
--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"
|
||||||
|
@ -6,7 +6,18 @@ drop table if exists t1, t2;
|
|||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
|
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
|
||||||
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
|
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 VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
@ -16,7 +16,19 @@ let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
|||||||
--echo #
|
--echo #
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
|
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;
|
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
--- r/galera_ist_MDEV-28423.result
|
--- r/galera_ist_MDEV-28423.result
|
||||||
+++ r/galera_ist_MDEV-28423,debug.reject
|
+++ r/galera_ist_MDEV-28423.reject
|
||||||
@@ -517,3 +517,187 @@
|
@@ -286,3 +286,111 @@
|
||||||
1
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
+Performing State Transfer on a server that has been killed and restarted
|
+Performing State Transfer on a server that has been killed and restarted
|
||||||
+while a DDL was in progress on it
|
+while a DDL was in progress on it
|
||||||
+connection node_1;
|
+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;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 VALUES (1,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (2,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (3,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (4,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (5,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+connection node_2;
|
+connection node_2;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 VALUES (6,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (7,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (8,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (9,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (10,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
|
+SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
|
||||||
+connection node_1;
|
+connection node_1;
|
||||||
@ -32,26 +32,26 @@
|
|||||||
+connection node_1;
|
+connection node_1;
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+connection node_2;
|
+connection node_2;
|
||||||
+Performing --wsrep-recover ...
|
+Performing --wsrep-recover ...
|
||||||
+connection node_2;
|
+connection node_2;
|
||||||
@ -59,132 +59,56 @@
|
|||||||
+Using --wsrep-start-position when starting mysqld ...
|
+Using --wsrep-start-position when starting mysqld ...
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+connection node_1;
|
+connection node_1;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+connection node_1a_galera_st_kill_slave_ddl;
|
+connection node_1a_galera_st_kill_slave_ddl;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+ROLLBACK;
|
+ROLLBACK;
|
||||||
+SET AUTOCOMMIT=ON;
|
+SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
+SET SESSION wsrep_sync_wait=15;
|
+COUNT(*) = 2
|
||||||
+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
+1
|
||||||
+EXPECT_3
|
+SELECT COUNT(*) = 35 FROM t1;
|
||||||
+3
|
+COUNT(*) = 35
|
||||||
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
+1
|
||||||
+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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
+COUNT(*) = 0
|
+COUNT(*) = 0
|
||||||
+1
|
+1
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+connection node_1;
|
|
||||||
+SET AUTOCOMMIT=ON;
|
+SET AUTOCOMMIT=ON;
|
||||||
+SET SESSION wsrep_sync_wait=15;
|
+connection node_1;
|
||||||
+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
+SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
+EXPECT_3
|
+COUNT(*) = 2
|
||||||
+3
|
+1
|
||||||
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
+SELECT COUNT(*) = 35 FROM t1;
|
||||||
+EXPECT_35
|
+COUNT(*) = 35
|
||||||
+35
|
+1
|
||||||
+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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
+COUNT(*) = 0
|
+COUNT(*) = 0
|
||||||
+1
|
+1
|
||||||
+DROP TABLE t1;
|
+DROP TABLE t1;
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
|
+SET AUTOCOMMIT=ON;
|
||||||
+SET GLOBAL debug_dbug = $debug_orig;
|
+SET GLOBAL debug_dbug = $debug_orig;
|
||||||
|
@ -1,519 +1,287 @@
|
|||||||
connection node_2;
|
|
||||||
connection node_1;
|
|
||||||
connection node_1;
|
connection node_1;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Performing State Transfer on a server that has been temporarily disconnected
|
Performing State Transfer on a server that has been temporarily disconnected
|
||||||
connection node_1;
|
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;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (1,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (2,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (3,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (4,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (5,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (6,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (7,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (8,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (9,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (10,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
Unloading wsrep provider ...
|
Unloading wsrep provider ...
|
||||||
SET GLOBAL wsrep_cluster_address = '';
|
SET GLOBAL wsrep_cluster_address = '';
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (11,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (12,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (13,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (14,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (15,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (20,'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;
|
connect node_1a_galera_st_disconnect_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Loading wsrep provider ...
|
Loading wsrep provider ...
|
||||||
disconnect node_2;
|
|
||||||
connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
|
||||||
connection node_2;
|
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (26,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (27,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (28,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (29,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (30,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (36,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (37,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (38,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (39,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (40,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1a_galera_st_disconnect_slave;
|
connection node_1a_galera_st_disconnect_slave;
|
||||||
INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET AUTOCOMMIT=ON;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
COUNT(*) = 35
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
connection node_1;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=ON;
|
SET AUTOCOMMIT=ON;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
connection node_1;
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
EXPECT_35
|
COUNT(*) = 35
|
||||||
35
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
Performing State Transfer on a server that has been shut down cleanly and restarted
|
Performing State Transfer on a server that has been shut down cleanly and restarted
|
||||||
connection node_1;
|
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;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (1,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (2,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (3,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (4,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (5,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (6,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (7,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (8,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (9,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (10,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
Shutting down server ...
|
Shutting down server ...
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (11,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (12,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (13,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (14,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (15,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (20,'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;
|
connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Starting server ...
|
Starting server ...
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (26,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (27,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (28,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (29,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (30,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (36,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (37,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (38,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (39,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (40,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1a_galera_st_shutdown_slave;
|
connection node_1a_galera_st_shutdown_slave;
|
||||||
INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET AUTOCOMMIT=ON;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
COUNT(*) = 35
|
||||||
SELECT COUNT(*) AS EXPECT_15 FROM t1;
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
|
||||||
SET AUTOCOMMIT=ON;
|
SET AUTOCOMMIT=ON;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
connection node_1;
|
||||||
SELECT COUNT(*) AS EXPECT_15 FROM t1;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
EXPECT_15
|
COUNT(*) = 35
|
||||||
35
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
Performing State Transfer on a server that has been killed and restarted
|
Performing State Transfer on a server that has been killed and restarted
|
||||||
connection node_1;
|
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;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (1,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (2,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (3,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (4,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (5,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (6,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (7,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (8,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (9,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (10,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
Killing server ...
|
Killing server ...
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (11,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (12,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (13,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (14,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (15,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (20,'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;
|
connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Performing --wsrep-recover ...
|
Performing --wsrep-recover ...
|
||||||
Starting server ...
|
Starting server ...
|
||||||
Using --wsrep-start-position when starting mysqld ...
|
Using --wsrep-start-position when starting mysqld ...
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (26,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (27,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (28,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (29,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (30,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (36,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (37,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (38,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (39,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (40,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1a_galera_st_kill_slave;
|
connection node_1a_galera_st_kill_slave;
|
||||||
INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('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 (46,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET AUTOCOMMIT=ON;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
COUNT(*) = 35
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
|
||||||
SET AUTOCOMMIT=ON;
|
SET AUTOCOMMIT=ON;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
connection node_1;
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
EXPECT_35
|
COUNT(*) = 35
|
||||||
35
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
--- r/galera_ist_MDEV-28583.result
|
--- r/galera_ist_MDEV-28583.result
|
||||||
+++ r/galera_ist_MDEV-28583,debug.reject
|
+++ r/galera_ist_MDEV-28583.reject
|
||||||
@@ -517,3 +517,187 @@
|
@@ -285,3 +285,111 @@
|
||||||
1
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
+Performing State Transfer on a server that has been killed and restarted
|
+Performing State Transfer on a server that has been killed and restarted
|
||||||
+while a DDL was in progress on it
|
+while a DDL was in progress on it
|
||||||
+connection node_1;
|
+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;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 VALUES (1,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (2,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (3,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (4,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+INSERT INTO t1 VALUES (5,'node1_committed_before');
|
+INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
+connection node_2;
|
+connection node_2;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 VALUES (6,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (7,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (8,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (9,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+INSERT INTO t1 VALUES (10,'node2_committed_before');
|
+INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
|
+SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
|
||||||
+connection node_1;
|
+connection node_1;
|
||||||
@ -32,26 +32,26 @@
|
|||||||
+connection node_1;
|
+connection node_1;
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
+connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+connection node_2;
|
+connection node_2;
|
||||||
+Performing --wsrep-recover ...
|
+Performing --wsrep-recover ...
|
||||||
+connection node_2;
|
+connection node_2;
|
||||||
@ -59,132 +59,56 @@
|
|||||||
+Using --wsrep-start-position when starting mysqld ...
|
+Using --wsrep-start-position when starting mysqld ...
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+connection node_1;
|
+connection node_1;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+SET AUTOCOMMIT=OFF;
|
+SET AUTOCOMMIT=OFF;
|
||||||
+START TRANSACTION;
|
+START TRANSACTION;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+connection node_1a_galera_st_kill_slave_ddl;
|
+connection node_1a_galera_st_kill_slave_ddl;
|
||||||
+INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
+INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after');
|
+INSERT INTO t1 (f1) VALUES ('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');
|
||||||
+ROLLBACK;
|
+ROLLBACK;
|
||||||
+SET AUTOCOMMIT=ON;
|
+SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
+SET SESSION wsrep_sync_wait=15;
|
+COUNT(*) = 2
|
||||||
+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
+1
|
||||||
+EXPECT_3
|
+SELECT COUNT(*) = 35 FROM t1;
|
||||||
+3
|
+COUNT(*) = 35
|
||||||
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
+1
|
||||||
+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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
+COUNT(*) = 0
|
+COUNT(*) = 0
|
||||||
+1
|
+1
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
+connection node_1;
|
|
||||||
+SET AUTOCOMMIT=ON;
|
+SET AUTOCOMMIT=ON;
|
||||||
+SET SESSION wsrep_sync_wait=15;
|
+connection node_1;
|
||||||
+SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
+SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
+EXPECT_3
|
+COUNT(*) = 2
|
||||||
+3
|
+1
|
||||||
+SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
+SELECT COUNT(*) = 35 FROM t1;
|
||||||
+EXPECT_35
|
+COUNT(*) = 35
|
||||||
+35
|
+1
|
||||||
+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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
+SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
+COUNT(*) = 0
|
+COUNT(*) = 0
|
||||||
+1
|
+1
|
||||||
+DROP TABLE t1;
|
+DROP TABLE t1;
|
||||||
+COMMIT;
|
+COMMIT;
|
||||||
|
+SET AUTOCOMMIT=ON;
|
||||||
+SET GLOBAL debug_dbug = $debug_orig;
|
+SET GLOBAL debug_dbug = $debug_orig;
|
||||||
|
@ -1,519 +1,287 @@
|
|||||||
connection node_2;
|
|
||||||
connection node_1;
|
|
||||||
connection node_1;
|
connection node_1;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Performing State Transfer on a server that has been temporarily disconnected
|
Performing State Transfer on a server that has been temporarily disconnected
|
||||||
connection node_1;
|
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;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (1,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (2,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (3,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (4,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (5,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (6,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (7,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (8,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (9,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (10,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
Unloading wsrep provider ...
|
Unloading wsrep provider ...
|
||||||
SET GLOBAL wsrep_cluster_address = '';
|
SET GLOBAL wsrep_cluster_address = '';
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (11,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (12,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (13,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (14,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (15,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (20,'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;
|
connect node_1a_galera_st_disconnect_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Loading wsrep provider ...
|
Loading wsrep provider ...
|
||||||
disconnect node_2;
|
|
||||||
connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
|
||||||
connection node_2;
|
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (26,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (27,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (28,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (29,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (30,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (36,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (37,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (38,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (39,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (40,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1a_galera_st_disconnect_slave;
|
connection node_1a_galera_st_disconnect_slave;
|
||||||
INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET AUTOCOMMIT=ON;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
COUNT(*) = 35
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
connection node_1;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=ON;
|
SET AUTOCOMMIT=ON;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
connection node_1;
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
EXPECT_35
|
COUNT(*) = 35
|
||||||
35
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
Performing State Transfer on a server that has been shut down cleanly and restarted
|
Performing State Transfer on a server that has been shut down cleanly and restarted
|
||||||
connection node_1;
|
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;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (1,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (2,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (3,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (4,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (5,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (6,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (7,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (8,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (9,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (10,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
Shutting down server ...
|
Shutting down server ...
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (11,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (12,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (13,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (14,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (15,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (20,'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;
|
connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Starting server ...
|
Starting server ...
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (26,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (27,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (28,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (29,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (30,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (36,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (37,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (38,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (39,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (40,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1a_galera_st_shutdown_slave;
|
connection node_1a_galera_st_shutdown_slave;
|
||||||
INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (44,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (45,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET AUTOCOMMIT=ON;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
COUNT(*) = 35
|
||||||
SELECT COUNT(*) AS EXPECT_15 FROM t1;
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
|
||||||
SET AUTOCOMMIT=ON;
|
SET AUTOCOMMIT=ON;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
connection node_1;
|
||||||
SELECT COUNT(*) AS EXPECT_15 FROM t1;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
EXPECT_15
|
COUNT(*) = 35
|
||||||
35
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
Performing State Transfer on a server that has been killed and restarted
|
Performing State Transfer on a server that has been killed and restarted
|
||||||
connection node_1;
|
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;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (1,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (2,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (3,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (4,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
INSERT INTO t1 VALUES (5,'node1_committed_before');
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (6,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (7,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (8,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (9,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES (10,'node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
Killing server ...
|
Killing server ...
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (11,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (12,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (13,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (14,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
INSERT INTO t1 VALUES (15,'node1_committed_during');
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (16,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (17,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (18,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (19,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (20,'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;
|
connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (21,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (22,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (23,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (24,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (25,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Performing --wsrep-recover ...
|
Performing --wsrep-recover ...
|
||||||
Starting server ...
|
Starting server ...
|
||||||
Using --wsrep-start-position when starting mysqld ...
|
Using --wsrep-start-position when starting mysqld ...
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (26,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (27,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (28,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (29,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
INSERT INTO t1 VALUES (30,'node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
INSERT INTO t1 VALUES (31,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (32,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (33,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (34,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES (35,'node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (36,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (37,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (38,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (39,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES (40,'node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1a_galera_st_kill_slave;
|
connection node_1a_galera_st_kill_slave;
|
||||||
INSERT INTO t1 VALUES (41,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (42,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES (43,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('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 (46,'node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET AUTOCOMMIT=ON;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
COUNT(*) = 35
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1;
|
|
||||||
SET AUTOCOMMIT=ON;
|
SET AUTOCOMMIT=ON;
|
||||||
SET SESSION wsrep_sync_wait=15;
|
connection node_1;
|
||||||
SELECT COUNT(*) AS EXPECT_35 FROM t1;
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
EXPECT_35
|
COUNT(*) = 35
|
||||||
35
|
1
|
||||||
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(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
COUNT(*) = 0
|
COUNT(*) = 0
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
|
@ -718,4 +718,18 @@ t1 CREATE TABLE `t1` (
|
|||||||
FULLTEXT KEY `a_2` (`a`)
|
FULLTEXT KEY `a_2` (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
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
|
# End of 10.3 tests
|
||||||
|
@ -741,4 +741,20 @@ ALTER TABLE t1 ADD FULLTEXT INDEX (a);
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--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
|
--echo # End of 10.3 tests
|
||||||
|
@ -86,7 +86,6 @@ encrypt_threads=""
|
|||||||
encrypt_chunk=""
|
encrypt_chunk=""
|
||||||
|
|
||||||
readonly SECRET_TAG='secret'
|
readonly SECRET_TAG='secret'
|
||||||
readonly TOTAL_TAG='secret /total'
|
|
||||||
|
|
||||||
# Required for backup locks
|
# Required for backup locks
|
||||||
# For backup locks it is 1 sent by joiner
|
# For backup locks it is 1 sent by joiner
|
||||||
@ -419,7 +418,7 @@ get_transfer()
|
|||||||
|
|
||||||
get_footprint()
|
get_footprint()
|
||||||
{
|
{
|
||||||
pushd "$WSREP_SST_OPT_DATA" 1>/dev/null
|
cd "$DATA_DIR"
|
||||||
payload=$(find . -regex '.*\.ibd$\|.*\.MYI$\|.*\.MYD$\|.*ibdata1$' \
|
payload=$(find . -regex '.*\.ibd$\|.*\.MYI$\|.*\.MYD$\|.*ibdata1$' \
|
||||||
-type f -print0 | du --files0-from=- --block-size=1 -c -s | \
|
-type f -print0 | du --files0-from=- --block-size=1 -c -s | \
|
||||||
awk 'END { print $1 }')
|
awk 'END { print $1 }')
|
||||||
@ -428,7 +427,7 @@ get_footprint()
|
|||||||
# When compression/compaction used, the progress is only an approximate.
|
# When compression/compaction used, the progress is only an approximate.
|
||||||
payload=$(( payload*1/2 ))
|
payload=$(( payload*1/2 ))
|
||||||
fi
|
fi
|
||||||
popd 1>/dev/null
|
cd "$OLD_PWD"
|
||||||
pcmd="$pcmd -s $payload"
|
pcmd="$pcmd -s $payload"
|
||||||
adjust_progress
|
adjust_progress
|
||||||
}
|
}
|
||||||
|
@ -900,10 +900,12 @@ void partition_info::vers_check_limit(THD *thd)
|
|||||||
bitmap_set_all(), but this is not optimal since there can be quite a number
|
bitmap_set_all(), but this is not optimal since there can be quite a number
|
||||||
of partitions.
|
of partitions.
|
||||||
*/
|
*/
|
||||||
|
#ifndef DBUG_OFF
|
||||||
const uint32 sub_factor= num_subparts ? num_subparts : 1;
|
const uint32 sub_factor= num_subparts ? num_subparts : 1;
|
||||||
uint32 part_id= vers_info->hist_part->id * sub_factor;
|
uint32 part_id= vers_info->hist_part->id * sub_factor;
|
||||||
const uint32 part_id_end= part_id + sub_factor;
|
const uint32 part_id_end= part_id + sub_factor;
|
||||||
DBUG_ASSERT(part_id_end <= num_parts * sub_factor);
|
DBUG_ASSERT(part_id_end <= num_parts * sub_factor);
|
||||||
|
#endif
|
||||||
|
|
||||||
ha_partition *hp= (ha_partition*)(table->file);
|
ha_partition *hp= (ha_partition*)(table->file);
|
||||||
ha_rows hist_rows= hp->part_records(vers_info->hist_part);
|
ha_rows hist_rows= hp->part_records(vers_info->hist_part);
|
||||||
|
@ -539,6 +539,14 @@ bool Sql_cmd_alter_table_exchange_partition::
|
|||||||
part_table= table_list->table;
|
part_table= table_list->table;
|
||||||
swap_table= swap_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)))
|
if (unlikely(check_exchange_partition(swap_table, part_table)))
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
|
@ -3214,9 +3214,6 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
|
|||||||
uint ha_open_flags, TABLE *outparam,
|
uint ha_open_flags, TABLE *outparam,
|
||||||
bool is_create_table,
|
bool is_create_table,
|
||||||
List<String> *partitions_to_open= NULL);
|
List<String> *partitions_to_open= NULL);
|
||||||
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 parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
|
||||||
bool *error_reported, vcol_init_mode expr);
|
bool *error_reported, vcol_init_mode expr);
|
||||||
TABLE_SHARE *alloc_table_share(const char *db, const char *table_name,
|
TABLE_SHARE *alloc_table_share(const char *db, const char *table_name,
|
||||||
|
@ -946,15 +946,6 @@ bool TDBMYSQL::OpenDB(PGLOBAL g)
|
|||||||
|
|
||||||
} // endif MakeInsert
|
} // 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
|
} else
|
||||||
// m_Rc = (Mode == MODE_DELETE) ? MakeDelete(g) : MakeUpdate(g);
|
// m_Rc = (Mode == MODE_DELETE) ? MakeDelete(g) : MakeUpdate(g);
|
||||||
m_Rc = (MakeCommand(g)) ? RC_FX : RC_OK;
|
m_Rc = (MakeCommand(g)) ? RC_FX : RC_OK;
|
||||||
@ -1216,16 +1207,6 @@ int TDBMYSQL::DeleteDB(PGLOBAL g, int irc)
|
|||||||
void TDBMYSQL::CloseDB(PGLOBAL g)
|
void TDBMYSQL::CloseDB(PGLOBAL g)
|
||||||
{
|
{
|
||||||
if (Myc.Connected()) {
|
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();
|
Myc.Close();
|
||||||
} // endif Myc
|
} // endif Myc
|
||||||
|
@ -1847,6 +1847,7 @@ dict_load_columns(
|
|||||||
the flag is set before the table is created. */
|
the flag is set before the table is created. */
|
||||||
if (table->fts == NULL) {
|
if (table->fts == NULL) {
|
||||||
table->fts = fts_create(table);
|
table->fts = fts_create(table);
|
||||||
|
table->fts->cache = fts_cache_create(table);
|
||||||
fts_optimize_add_table(table);
|
fts_optimize_add_table(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2366,6 +2366,7 @@ os_file_get_last_error_low(
|
|||||||
case EXDEV:
|
case EXDEV:
|
||||||
case ENOTDIR:
|
case ENOTDIR:
|
||||||
case EISDIR:
|
case EISDIR:
|
||||||
|
case EPERM:
|
||||||
return(OS_FILE_PATH_ERROR);
|
return(OS_FILE_PATH_ERROR);
|
||||||
case EAGAIN:
|
case EAGAIN:
|
||||||
if (srv_use_native_aio) {
|
if (srv_use_native_aio) {
|
||||||
|
@ -7995,22 +7995,14 @@ void translog_flush_buffers(TRANSLOG_ADDRESS *lsn,
|
|||||||
}
|
}
|
||||||
else
|
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"));
|
DBUG_PRINT("info", ("There is no LSNs yet generated => do nothing"));
|
||||||
translog_unlock();
|
translog_unlock();
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUG_ASSERT(log_descriptor.bc.buffer->prev_last_lsn != LSN_IMPOSSIBLE);
|
|
||||||
/* fix lsn if it was horizon */
|
/* fix lsn if it was horizon */
|
||||||
*lsn= log_descriptor.bc.buffer->prev_last_lsn;
|
*lsn= log_descriptor.bc.buffer->prev_last_lsn;
|
||||||
DBUG_PRINT("info", ("LSN to flush fixed to prev last lsn: " LSN_FMT,
|
DBUG_PRINT("info", ("LSN to flush fixed to prev last lsn: " LSN_FMT,
|
||||||
|
Reference in New Issue
Block a user