Merge 10.4 into 10.5
This commit is contained in:
commit
4b3c3e526e
@ -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_COPY_S3_TABLES,
|
OPT_COPY_S3_TABLES,
|
||||||
OPT_PRINT_TABLE_METADATA,
|
OPT_PRINT_TABLE_METADATA,
|
||||||
|
@ -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},
|
||||||
@ -1812,6 +1814,14 @@ get_one_option(const struct my_option *opt, const char *argument, const char *)
|
|||||||
printf("WARNING: --server-arg option not supported in this configuration.\n");
|
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;
|
||||||
@ -206,14 +204,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);
|
||||||
@ -239,26 +236,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) {
|
||||||
ds_write(dest_file, threads[i].to,
|
fail = write_uint32_le(dest_file, threads[i].adler) ||
|
||||||
threads[i].to_len)) {
|
ds_write(dest_file, threads[i].to,
|
||||||
msg("compress: write to the destination stream "
|
threads[i].to_len);
|
||||||
"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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -328,6 +323,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)
|
||||||
@ -342,53 +354,31 @@ 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;
|
||||||
|
|
||||||
thd->to = (char *) my_malloc(PSI_NOT_INSTRUMENTED,
|
thd->to = (char *) my_malloc(PSI_NOT_INSTRUMENTED,
|
||||||
COMPRESS_CHUNK_SIZE + MY_QLZ_COMPRESS_OVERHEAD, MYF(MY_FAE));
|
COMPRESS_CHUNK_SIZE + MY_QLZ_COMPRESS_OVERHEAD, MYF(MY_FAE));
|
||||||
|
|
||||||
/* Initialize the control mutex and condition var */
|
|
||||||
if (pthread_mutex_init(&thd->ctrl_mutex, NULL) ||
|
|
||||||
pthread_cond_init(&thd->ctrl_cond, NULL)) {
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialize and data mutex and condition var */
|
/* 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);
|
||||||
@ -402,21 +392,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);
|
||||||
@ -428,19 +404,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,
|
||||||
|
@ -629,4 +629,7 @@ 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;
|
||||||
|
@ -12,3 +12,6 @@ INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1);
|
|||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
DROP SEQUENCE Seq1_1;
|
DROP SEQUENCE Seq1_1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
connection node_2;
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
54
mysql-test/suite/galera/r/MDEV-27862.result
Normal file
54
mysql-test/suite/galera/r/MDEV-27862.result
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
connection node_2;
|
||||||
|
connection node_1;
|
||||||
|
CREATE SEQUENCE seq_nocache ENGINE=InnoDB;
|
||||||
|
DROP SEQUENCE seq_nocache;
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
connection node_2;
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
connection node_1;
|
||||||
|
CREATE SEQUENCE seq NOCACHE ENGINE=InnoDB;
|
||||||
|
SELECT NEXTVAL(seq) = 1;
|
||||||
|
NEXTVAL(seq) = 1
|
||||||
|
1
|
||||||
|
connection node_2;
|
||||||
|
SELECT NEXTVAL(seq) = 2;
|
||||||
|
NEXTVAL(seq) = 2
|
||||||
|
1
|
||||||
|
connection node_1;
|
||||||
|
SELECT NEXTVAL(seq) = 3;
|
||||||
|
NEXTVAL(seq) = 3
|
||||||
|
1
|
||||||
|
SELECT SETVAL(seq, 100);
|
||||||
|
SETVAL(seq, 100)
|
||||||
|
100
|
||||||
|
connection node_2;
|
||||||
|
SELECT NEXTVAL(seq) = 101;
|
||||||
|
NEXTVAL(seq) = 101
|
||||||
|
1
|
||||||
|
connection node_1;
|
||||||
|
SELECT NEXTVAL(seq) = 102;
|
||||||
|
NEXTVAL(seq) = 102
|
||||||
|
1
|
||||||
|
DROP SEQUENCE seq;
|
||||||
|
CREATE TABLE t1(f1 INT);
|
||||||
|
CREATE SEQUENCE seq_transaction NOCACHE ENGINE=InnoDB;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES (0);
|
||||||
|
SELECT NEXTVAL(seq_transaction);
|
||||||
|
NEXTVAL(seq_transaction)
|
||||||
|
1
|
||||||
|
INSERT INTO t1 VALUES (NEXTVAL(seq_transaction));
|
||||||
|
COMMIT;
|
||||||
|
connection node_2;
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
COUNT(*) = 2
|
||||||
|
1
|
||||||
|
SELECT NEXTVAL(seq_transaction) = 3;
|
||||||
|
NEXTVAL(seq_transaction) = 3
|
||||||
|
1
|
||||||
|
connection node_1;
|
||||||
|
SELECT NEXTVAL(seq_transaction) = 4;
|
||||||
|
NEXTVAL(seq_transaction) = 4
|
||||||
|
1
|
||||||
|
DROP SEQUENCE seq_transaction;
|
||||||
|
DROP TABLE t1;
|
@ -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;
|
||||||
|
@ -44,6 +44,9 @@ Table Create Table
|
|||||||
Seq1_1 CREATE SEQUENCE `Seq1_1` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
|
Seq1_1 CREATE SEQUENCE `Seq1_1` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
|
||||||
select NEXT VALUE FOR Seq1_1;
|
select NEXT VALUE FOR Seq1_1;
|
||||||
NEXT VALUE FOR Seq1_1
|
NEXT VALUE FOR Seq1_1
|
||||||
1
|
3001
|
||||||
connection node_1;
|
connection node_1;
|
||||||
DROP SEQUENCE Seq1_1;
|
DROP SEQUENCE Seq1_1;
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
connection node_2;
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
@ -13,3 +13,11 @@ CREATE SEQUENCE Seq1_1 START WITH 1 INCREMENT BY 1;
|
|||||||
INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1);
|
INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1);
|
||||||
DROP SEQUENCE Seq1_1;
|
DROP SEQUENCE Seq1_1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# Supress warning for SEQUENCES that are declared without `NOCACHE` introduced with MDEV-27862
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
4
mysql-test/suite/galera/t/MDEV-27862.combinations
Normal file
4
mysql-test/suite/galera/t/MDEV-27862.combinations
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[binlogoff]
|
||||||
|
|
||||||
|
[binlogon]
|
||||||
|
log-bin
|
67
mysql-test/suite/galera/t/MDEV-27862.test
Normal file
67
mysql-test/suite/galera/t/MDEV-27862.test
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
# Report WARNING when SEQUENCE is created without `NOCACHE`
|
||||||
|
|
||||||
|
CREATE SEQUENCE seq_nocache ENGINE=InnoDB;
|
||||||
|
DROP SEQUENCE seq_nocache;
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
|
||||||
|
# NEXTVAL
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
|
||||||
|
CREATE SEQUENCE seq NOCACHE ENGINE=InnoDB;
|
||||||
|
|
||||||
|
SELECT NEXTVAL(seq) = 1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
|
||||||
|
SELECT NEXTVAL(seq) = 2;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
|
||||||
|
SELECT NEXTVAL(seq) = 3;
|
||||||
|
|
||||||
|
|
||||||
|
# SETVAL
|
||||||
|
|
||||||
|
SELECT SETVAL(seq, 100);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
|
||||||
|
SELECT NEXTVAL(seq) = 101;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
|
||||||
|
SELECT NEXTVAL(seq) = 102;
|
||||||
|
|
||||||
|
DROP SEQUENCE seq;
|
||||||
|
|
||||||
|
# TRANSACTIONS
|
||||||
|
|
||||||
|
CREATE TABLE t1(f1 INT);
|
||||||
|
CREATE SEQUENCE seq_transaction NOCACHE ENGINE=InnoDB;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES (0);
|
||||||
|
SELECT NEXTVAL(seq_transaction);
|
||||||
|
INSERT INTO t1 VALUES (NEXTVAL(seq_transaction));
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
SELECT NEXTVAL(seq_transaction) = 3;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT NEXTVAL(seq_transaction) = 4;
|
||||||
|
|
||||||
|
DROP SEQUENCE seq_transaction;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
@ -44,3 +44,9 @@ select NEXT VALUE FOR Seq1_1;
|
|||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
DROP SEQUENCE Seq1_1;
|
DROP SEQUENCE Seq1_1;
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
@ -716,4 +716,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
|
||||||
|
@ -743,4 +743,20 @@ SHOW CREATE TABLE t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-25257 SEGV in fts_get_next_doc_id upon some INSERT
|
||||||
|
--echo #
|
||||||
|
SET @save = @@global.innodb_file_per_table;
|
||||||
|
SET @@global.innodb_file_per_table = 0;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
col_int INTEGER, col_text TEXT,
|
||||||
|
col_int_g INTEGER GENERATED ALWAYS AS (col_int)
|
||||||
|
) ENGINE = InnoDB ROW_FORMAT = Redundant ;
|
||||||
|
ALTER TABLE t1 ADD FULLTEXT KEY `ftidx` ( col_text ) ;
|
||||||
|
ALTER TABLE t1 DROP KEY `ftidx` ;
|
||||||
|
INSERT INTO t1 (col_int, col_text) VALUES ( 1255, NULL);
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@global.innodb_file_per_table = @save;
|
||||||
|
|
||||||
--echo # End of 10.3 tests
|
--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
|
||||||
}
|
}
|
||||||
|
@ -452,6 +452,9 @@ static int sequence_initialize(void *p)
|
|||||||
HTON_HIDDEN |
|
HTON_HIDDEN |
|
||||||
HTON_TEMPORARY_NOT_SUPPORTED |
|
HTON_TEMPORARY_NOT_SUPPORTED |
|
||||||
HTON_ALTER_NOT_SUPPORTED |
|
HTON_ALTER_NOT_SUPPORTED |
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
HTON_WSREP_REPLICATION |
|
||||||
|
#endif
|
||||||
HTON_NO_PARTITION);
|
HTON_NO_PARTITION);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
10
sql/log.cc
10
sql/log.cc
@ -2147,7 +2147,13 @@ static int binlog_commit(handlerton *hton, THD *thd, bool all)
|
|||||||
|
|
||||||
thd->backup_stage(&org_stage);
|
thd->backup_stage(&org_stage);
|
||||||
THD_STAGE_INFO(thd, stage_binlog_write);
|
THD_STAGE_INFO(thd, stage_binlog_write);
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
// DON'T clear stmt cache in case we are in transaction
|
||||||
|
if (!cache_mngr->stmt_cache.empty() &&
|
||||||
|
(!wsrep_on(thd) || ending_trans(thd, all)))
|
||||||
|
#else
|
||||||
if (!cache_mngr->stmt_cache.empty())
|
if (!cache_mngr->stmt_cache.empty())
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
error= binlog_commit_flush_stmt_cache(thd, all, cache_mngr);
|
error= binlog_commit_flush_stmt_cache(thd, all, cache_mngr);
|
||||||
}
|
}
|
||||||
@ -11013,13 +11019,13 @@ maria_declare_plugin_end;
|
|||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
#include "wsrep_mysqld.h"
|
#include "wsrep_mysqld.h"
|
||||||
|
|
||||||
IO_CACHE *wsrep_get_trans_cache(THD * thd)
|
IO_CACHE *wsrep_get_cache(THD * thd, bool is_transactional)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(binlog_hton->slot != HA_SLOT_UNDEF);
|
DBUG_ASSERT(binlog_hton->slot != HA_SLOT_UNDEF);
|
||||||
binlog_cache_mngr *cache_mngr = (binlog_cache_mngr*)
|
binlog_cache_mngr *cache_mngr = (binlog_cache_mngr*)
|
||||||
thd_get_ha_data(thd, binlog_hton);
|
thd_get_ha_data(thd, binlog_hton);
|
||||||
if (cache_mngr)
|
if (cache_mngr)
|
||||||
return cache_mngr->get_binlog_cache_log(true);
|
return cache_mngr->get_binlog_cache_log(is_transactional);
|
||||||
|
|
||||||
WSREP_DEBUG("binlog cache not initialized, conn: %llu",
|
WSREP_DEBUG("binlog cache not initialized, conn: %llu",
|
||||||
thd->thread_id);
|
thd->thread_id);
|
||||||
|
@ -1247,7 +1247,7 @@ static inline TC_LOG *get_tc_log_implementation()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
IO_CACHE* wsrep_get_trans_cache(THD *);
|
IO_CACHE* wsrep_get_cache(THD *, bool);
|
||||||
void wsrep_thd_binlog_trx_reset(THD * thd);
|
void wsrep_thd_binlog_trx_reset(THD * thd);
|
||||||
void wsrep_thd_binlog_stmt_rollback(THD * thd);
|
void wsrep_thd_binlog_stmt_rollback(THD * thd);
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
|
@ -884,10 +884,12 @@ void partition_info::vers_check_limit(THD *thd)
|
|||||||
bitmap_set_all(), but this is not optimal since there can be quite a number
|
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);
|
||||||
|
@ -568,6 +568,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);
|
||||||
|
|
||||||
|
@ -309,6 +309,11 @@ bool sequence_insert(THD *thd, LEX *lex, TABLE_LIST *org_table_list)
|
|||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
if (WSREP_ON && seq->cache != 0)
|
||||||
|
WSREP_WARN("CREATE SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
#endif
|
||||||
|
|
||||||
/* If not temporary table */
|
/* If not temporary table */
|
||||||
if (!temporary_table)
|
if (!temporary_table)
|
||||||
{
|
{
|
||||||
@ -901,12 +906,18 @@ bool Sql_cmd_alter_sequence::execute(THD *thd)
|
|||||||
No_such_table_error_handler no_such_table_handler;
|
No_such_table_error_handler no_such_table_handler;
|
||||||
DBUG_ENTER("Sql_cmd_alter_sequence::execute");
|
DBUG_ENTER("Sql_cmd_alter_sequence::execute");
|
||||||
|
|
||||||
|
|
||||||
if (check_access(thd, ALTER_ACL, first_table->db.str,
|
if (check_access(thd, ALTER_ACL, first_table->db.str,
|
||||||
&first_table->grant.privilege,
|
&first_table->grant.privilege,
|
||||||
&first_table->grant.m_internal,
|
&first_table->grant.m_internal,
|
||||||
0, 0))
|
0, 0))
|
||||||
DBUG_RETURN(TRUE); /* purecov: inspected */
|
DBUG_RETURN(TRUE); /* purecov: inspected */
|
||||||
|
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
if (WSREP_ON && new_seq->cache != 0)
|
||||||
|
WSREP_WARN("ALTER SEQUENCES declared without `NOCACHE` will not behave correctly in galera cluster.");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (check_grant(thd, ALTER_ACL, first_table, FALSE, 1, FALSE))
|
if (check_grant(thd, ALTER_ACL, first_table, FALSE, 1, FALSE))
|
||||||
DBUG_RETURN(TRUE); /* purecov: inspected */
|
DBUG_RETURN(TRUE); /* purecov: inspected */
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef TABLE_INCLUDED
|
#ifndef TABLE_INCLUDED
|
||||||
#define TABLE_INCLUDED
|
#define TABLE_INCLUDED
|
||||||
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2009, 2021, MariaDB
|
Copyright (c) 2009, 2022, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
||||||
@ -3171,9 +3171,6 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
|
|||||||
bool is_create_table,
|
bool is_create_table,
|
||||||
List<String> *partitions_to_open= NULL);
|
List<String> *partitions_to_open= NULL);
|
||||||
bool copy_keys_from_share(TABLE *outparam, MEM_ROOT *root);
|
bool copy_keys_from_share(TABLE *outparam, MEM_ROOT *root);
|
||||||
bool fix_session_vcol_expr(THD *thd, Virtual_column_info *vcol);
|
|
||||||
bool fix_session_vcol_expr_for_read(THD *thd, Field *field,
|
|
||||||
Virtual_column_info *vcol);
|
|
||||||
bool parse_vcol_defs(THD *thd, MEM_ROOT *mem_root, TABLE *table,
|
bool 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,
|
||||||
|
@ -155,10 +155,10 @@ static int wsrep_write_cache_inc(THD* const thd,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
cache->read_pos= cache->read_end;
|
cache->read_pos= cache->read_end;
|
||||||
} while ((cache->file >= 0) && (length= my_b_fill(cache)));
|
} while ((cache->file >= 0) && (length= my_b_fill(cache)));
|
||||||
}
|
if (ret == 0)
|
||||||
if (ret == 0)
|
{
|
||||||
{
|
assert(total_length + thd->wsrep_sr().log_position() == saved_pos);
|
||||||
assert(total_length + thd->wsrep_sr().log_position() == saved_pos);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
@ -85,18 +85,37 @@ int Wsrep_client_service::prepare_data_for_replication()
|
|||||||
DBUG_ASSERT(m_thd == current_thd);
|
DBUG_ASSERT(m_thd == current_thd);
|
||||||
DBUG_ENTER("Wsrep_client_service::prepare_data_for_replication");
|
DBUG_ENTER("Wsrep_client_service::prepare_data_for_replication");
|
||||||
size_t data_len= 0;
|
size_t data_len= 0;
|
||||||
IO_CACHE* cache= wsrep_get_trans_cache(m_thd);
|
IO_CACHE* transactional_cache= wsrep_get_cache(m_thd, true);
|
||||||
|
IO_CACHE* stmt_cache= wsrep_get_cache(m_thd, false);
|
||||||
|
|
||||||
if (cache)
|
if (transactional_cache || stmt_cache)
|
||||||
{
|
{
|
||||||
m_thd->binlog_flush_pending_rows_event(true);
|
m_thd->binlog_flush_pending_rows_event(true);
|
||||||
if (wsrep_write_cache(m_thd, cache, &data_len))
|
|
||||||
|
size_t transactional_data_len= 0;
|
||||||
|
size_t stmt_data_len= 0;
|
||||||
|
|
||||||
|
// Write transactional cache
|
||||||
|
if (transactional_cache &&
|
||||||
|
wsrep_write_cache(m_thd, transactional_cache, &transactional_data_len))
|
||||||
{
|
{
|
||||||
WSREP_ERROR("rbr write fail, data_len: %zu",
|
WSREP_ERROR("rbr write fail, data_len: %zu",
|
||||||
data_len);
|
data_len);
|
||||||
// wsrep_override_error(m_thd, ER_ERROR_DURING_COMMIT);
|
// wsrep_override_error(m_thd, ER_ERROR_DURING_COMMIT);
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Write stmt cache
|
||||||
|
if (stmt_cache && wsrep_write_cache(m_thd, stmt_cache, &stmt_data_len))
|
||||||
|
{
|
||||||
|
WSREP_ERROR("rbr write fail, data_len: %zu",
|
||||||
|
data_len);
|
||||||
|
// wsrep_override_error(m_thd, ER_ERROR_DURING_COMMIT);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Complete data written from both caches
|
||||||
|
data_len = transactional_data_len + stmt_data_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data_len == 0)
|
if (data_len == 0)
|
||||||
@ -138,7 +157,7 @@ int Wsrep_client_service::prepare_fragment_for_replication(
|
|||||||
DBUG_ASSERT(m_thd == current_thd);
|
DBUG_ASSERT(m_thd == current_thd);
|
||||||
THD* thd= m_thd;
|
THD* thd= m_thd;
|
||||||
DBUG_ENTER("Wsrep_client_service::prepare_fragment_for_replication");
|
DBUG_ENTER("Wsrep_client_service::prepare_fragment_for_replication");
|
||||||
IO_CACHE* cache= wsrep_get_trans_cache(thd);
|
IO_CACHE* cache= wsrep_get_cache(thd, true);
|
||||||
thd->binlog_flush_pending_rows_event(true);
|
thd->binlog_flush_pending_rows_event(true);
|
||||||
|
|
||||||
if (!cache)
|
if (!cache)
|
||||||
@ -220,7 +239,7 @@ bool Wsrep_client_service::statement_allowed_for_streaming() const
|
|||||||
|
|
||||||
size_t Wsrep_client_service::bytes_generated() const
|
size_t Wsrep_client_service::bytes_generated() const
|
||||||
{
|
{
|
||||||
IO_CACHE* cache= wsrep_get_trans_cache(m_thd);
|
IO_CACHE* cache= wsrep_get_cache(m_thd, true);
|
||||||
if (cache)
|
if (cache)
|
||||||
{
|
{
|
||||||
size_t pending_rows_event_length= 0;
|
size_t pending_rows_event_length= 0;
|
||||||
|
@ -650,7 +650,7 @@ static std::string wsrep_server_incoming_address()
|
|||||||
bool is_ipv6= false;
|
bool is_ipv6= false;
|
||||||
unsigned int my_bind_ip= INADDR_ANY; // default if not set
|
unsigned int my_bind_ip= INADDR_ANY; // default if not set
|
||||||
|
|
||||||
if (my_bind_addr_str && strlen(my_bind_addr_str) &&
|
if (my_bind_addr_str && strlen(my_bind_addr_str) &&
|
||||||
strcmp(my_bind_addr_str, "*") != 0)
|
strcmp(my_bind_addr_str, "*") != 0)
|
||||||
{
|
{
|
||||||
my_bind_ip= wsrep_check_ip(my_bind_addr_str, &is_ipv6);
|
my_bind_ip= wsrep_check_ip(my_bind_addr_str, &is_ipv6);
|
||||||
@ -715,9 +715,13 @@ static std::string wsrep_server_incoming_address()
|
|||||||
|
|
||||||
snprintf(inc_addr, inc_addr_max, fmt, addr.get_address(), port);
|
snprintf(inc_addr, inc_addr_max, fmt, addr.get_address(), port);
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
ret= wsrep_node_incoming_address;
|
if (!strlen(inc_addr))
|
||||||
|
ret= wsrep_node_incoming_address;
|
||||||
|
else
|
||||||
|
ret= inc_addr;
|
||||||
|
WSREP_DEBUG("wsrep_incoming_address = %s", ret.c_str());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -1842,6 +1842,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
ut_a(table->fts->doc_col == ULINT_UNDEFINED);
|
ut_a(table->fts->doc_col == ULINT_UNDEFINED);
|
||||||
|
@ -858,6 +858,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) {
|
||||||
|
@ -7996,22 +7996,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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user