mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
bzr merge -r4123..4144 codership/5.6
This commit is contained in:
@ -154,6 +154,7 @@ INCLUDE(cpack_rpm)
|
|||||||
INCLUDE(cpack_deb)
|
INCLUDE(cpack_deb)
|
||||||
|
|
||||||
# Add macros
|
# Add macros
|
||||||
|
INCLUDE(wsrep)
|
||||||
INCLUDE(character_sets)
|
INCLUDE(character_sets)
|
||||||
INCLUDE(cpu_info)
|
INCLUDE(cpu_info)
|
||||||
INCLUDE(zlib)
|
INCLUDE(zlib)
|
||||||
@ -167,7 +168,6 @@ INCLUDE(ctest)
|
|||||||
INCLUDE(plugin)
|
INCLUDE(plugin)
|
||||||
INCLUDE(install_macros)
|
INCLUDE(install_macros)
|
||||||
INCLUDE(mysql_add_executable)
|
INCLUDE(mysql_add_executable)
|
||||||
INCLUDE(wsrep)
|
|
||||||
|
|
||||||
# Handle options
|
# Handle options
|
||||||
OPTION(DISABLE_SHARED
|
OPTION(DISABLE_SHARED
|
||||||
@ -290,6 +290,7 @@ MARK_AS_ADVANCED(WITH_FAST_MUTEXES)
|
|||||||
|
|
||||||
OPTION(WITH_INNODB_DISALLOW_WRITES "InnoDB freeze writes patch from Google" ${WITH_WSREP})
|
OPTION(WITH_INNODB_DISALLOW_WRITES "InnoDB freeze writes patch from Google" ${WITH_WSREP})
|
||||||
IF (WITH_INNODB_DISALLOW_WRITES)
|
IF (WITH_INNODB_DISALLOW_WRITES)
|
||||||
|
MESSAGE(STATUS "INNODB_DISALLOW_WRITES")
|
||||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWITH_INNODB_DISALLOW_WRITES")
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWITH_INNODB_DISALLOW_WRITES")
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWITH_INNODB_DISALLOW_WRITES")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWITH_INNODB_DISALLOW_WRITES")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
@ -23,7 +23,7 @@ SET(WSREP_PATCH_VERSION "10")
|
|||||||
# MariaDB addition: Revision number of the last revision merged from
|
# MariaDB addition: Revision number of the last revision merged from
|
||||||
# codership branch visible in @@visible_comment.
|
# codership branch visible in @@visible_comment.
|
||||||
# Branch : codership-mysql/5.6
|
# Branch : codership-mysql/5.6
|
||||||
SET(WSREP_PATCH_REVNO "4123") # Should be updated on every merge.
|
SET(WSREP_PATCH_REVNO "4144") # Should be updated on every merge.
|
||||||
|
|
||||||
# MariaDB: Obtain patch revision number:
|
# MariaDB: Obtain patch revision number:
|
||||||
# Update WSREP_PATCH_REVNO if WSREP_REV environment variable is set.
|
# Update WSREP_PATCH_REVNO if WSREP_REV environment variable is set.
|
||||||
|
@ -229,12 +229,25 @@ INSERT INTO global_suppressions VALUES
|
|||||||
("Slave I/O: Setting @mariadb_slave_capability failed with error:.*"),
|
("Slave I/O: Setting @mariadb_slave_capability failed with error:.*"),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Galera-related warnings.
|
Galera suppressions
|
||||||
*/
|
*/
|
||||||
("WSREP: Could not open saved state file for reading: .*"),
|
("WSREP:*down context*"),
|
||||||
("WSREP: last inactive check more than .* skipping check"),
|
("WSREP: Failed to send state UUID:*"),
|
||||||
("WSREP: Gap in state sequence. Need state transfer."),
|
("WSREP: wsrep_sst_receive_address is set to '127.0.0.1"),
|
||||||
("WSREP: Failed to prepare for incremental state transfer: .*"),
|
("WSREP: option --wsrep-casual-reads is deprecated"),
|
||||||
|
("WSREP: --wsrep-casual-reads=ON takes precedence over --wsrep-sync-wait=0"),
|
||||||
|
("WSREP: Could not open saved state file for reading: "),
|
||||||
|
("WSREP: access file\\(gvwstate\\.dat\\) failed\\(No such file or directory\\)"),
|
||||||
|
("WSREP: Gap in state sequence\\. Need state transfer\\."),
|
||||||
|
("WSREP: Failed to prepare for incremental state transfer: Local state UUID \\(00000000-0000-0000-0000-000000000000\\) does not match group state UUID"),
|
||||||
|
("WSREP: No existing UUID has been found, so we assume that this is the first time that this server has been started\\. Generating a new UUID: "),
|
||||||
|
("WSREP: last inactive check more than"),
|
||||||
|
("WSREP: binlog cache not empty \\(0 bytes\\) at connection close"),
|
||||||
|
("WSREP: Failed to guess base node address"),
|
||||||
|
("WSREP: Guessing address for incoming client connections failed"),
|
||||||
|
("WSREP: Failed to read output of: '/sbin/ifconfig"),
|
||||||
|
("WSREP: SQL statement was ineffective"),
|
||||||
|
|
||||||
("THE_LAST_SUPPRESSION")||
|
("THE_LAST_SUPPRESSION")||
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ if (`SELECT LENGTH(@@secure_file_priv) > 0`)
|
|||||||
--copy_file $_wvtf_tmp_file $write_to_file
|
--copy_file $_wvtf_tmp_file $write_to_file
|
||||||
--remove_file $_wvtf_tmp_file
|
--remove_file $_wvtf_tmp_file
|
||||||
}
|
}
|
||||||
if (`SELECT LENGTH(@@secure_file_priv) = 0`)
|
if (`SELECT LENGTH(@@secure_file_priv) = 0 OR LENGTH(@@secure_file_priv) IS NULL`)
|
||||||
{
|
{
|
||||||
--eval SELECT '$write_var' INTO DUMPFILE '$write_to_file'
|
--eval SELECT '$write_var' INTO DUMPFILE '$write_to_file'
|
||||||
}
|
}
|
||||||
|
@ -3189,6 +3189,9 @@ sub check_wsrep_support() {
|
|||||||
mtr_report(" - adding wsrep, galera to default test suites");
|
mtr_report(" - adding wsrep, galera to default test suites");
|
||||||
push @DEFAULT_SUITES, qw(wsrep galera);
|
push @DEFAULT_SUITES, qw(wsrep galera);
|
||||||
|
|
||||||
|
# ADD scripts to $PATH to that wsrep_sst_* can be found
|
||||||
|
$ENV{'PATH'} = $ENV{'PATH'}.':'.$basedir.'/scripts';
|
||||||
|
|
||||||
# Check whether WSREP_PROVIDER environment variable is set.
|
# Check whether WSREP_PROVIDER environment variable is set.
|
||||||
if (defined $ENV{'WSREP_PROVIDER'}) {
|
if (defined $ENV{'WSREP_PROVIDER'}) {
|
||||||
if ((mtr_file_exists($ENV{'WSREP_PROVIDER'}) eq "") &&
|
if ((mtr_file_exists($ENV{'WSREP_PROVIDER'}) eq "") &&
|
||||||
|
@ -2,22 +2,36 @@
|
|||||||
!include include/default_mysqld.cnf
|
!include include/default_mysqld.cnf
|
||||||
|
|
||||||
[mysqld.1]
|
[mysqld.1]
|
||||||
|
innodb_file_per_table
|
||||||
binlog-format=row
|
binlog-format=row
|
||||||
|
innodb_file_format=Barracuda
|
||||||
|
performance_schema=OFF
|
||||||
|
|
||||||
wsrep_provider=@ENV.WSREP_PROVIDER
|
wsrep_provider=@ENV.WSREP_PROVIDER
|
||||||
wsrep_cluster_address='gcomm://'
|
wsrep_cluster_address='gcomm://'
|
||||||
wsrep_provider_options='base_port=@mysqld.1.#galera_port'
|
wsrep_provider_options='base_port=@mysqld.1.#galera_port'
|
||||||
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
|
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
|
||||||
# enforce read-committed characteristics across the cluster
|
# enforce read-committed characteristics across the cluster
|
||||||
wsrep_causal_reads=ON
|
wsrep_causal_reads=ON
|
||||||
|
wsrep_sync_wait = 7
|
||||||
|
wsrep_node_address=127.0.0.1
|
||||||
|
wsrep_node_incoming_address=127.0.0.1
|
||||||
|
|
||||||
[mysqld.2]
|
[mysqld.2]
|
||||||
|
innodb_file_per_table
|
||||||
binlog-format=row
|
binlog-format=row
|
||||||
|
innodb_file_format=Barracuda
|
||||||
|
performance_schema=OFF
|
||||||
|
|
||||||
wsrep_provider=@ENV.WSREP_PROVIDER
|
wsrep_provider=@ENV.WSREP_PROVIDER
|
||||||
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
|
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port'
|
||||||
wsrep_provider_options='base_port=@mysqld.2.#galera_port'
|
wsrep_provider_options='base_port=@mysqld.2.#galera_port'
|
||||||
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
|
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
|
||||||
# enforce read-committed characteristics across the cluster
|
# enforce read-committed characteristics across the cluster
|
||||||
wsrep_causal_reads=ON
|
wsrep_causal_reads=ON
|
||||||
|
wsrep_sync_wait = 7
|
||||||
|
wsrep_node_address=127.0.0.1
|
||||||
|
wsrep_node_incoming_address=127.0.0.1
|
||||||
|
|
||||||
[ENV]
|
[ENV]
|
||||||
NODE_MYPORT_1= @mysqld.1.port
|
NODE_MYPORT_1= @mysqld.1.port
|
||||||
|
30
mysql-test/suite/galera/r/galera_fk_cascade_delete.result
Normal file
30
mysql-test/suite/galera/r/galera_fk_cascade_delete.result
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
CREATE TABLE grandparent (
|
||||||
|
id INT NOT NULL PRIMARY KEY
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
grandparent_id INT,
|
||||||
|
FOREIGN KEY (grandparent_id)
|
||||||
|
REFERENCES grandparent(id)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO grandparent VALUES (1),(2);
|
||||||
|
INSERT INTO parent VALUES (1,1), (2,2);
|
||||||
|
INSERT INTO child VALUES (1,1), (2,2);
|
||||||
|
DELETE FROM grandparent WHERE id = 1;
|
||||||
|
SELECT COUNT(*) = 0 FROM parent WHERE grandparent_id = 1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE parent_id = 1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
||||||
|
DROP TABLE grandparent;
|
30
mysql-test/suite/galera/r/galera_fk_cascade_update.result
Normal file
30
mysql-test/suite/galera/r/galera_fk_cascade_update.result
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
CREATE TABLE grandparent (
|
||||||
|
id INT NOT NULL PRIMARY KEY
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
grandparent_id INT,
|
||||||
|
FOREIGN KEY (grandparent_id)
|
||||||
|
REFERENCES grandparent(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
grandparent_id INT,
|
||||||
|
FOREIGN KEY (grandparent_id)
|
||||||
|
REFERENCES parent(grandparent_id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO grandparent VALUES (1),(2);
|
||||||
|
INSERT INTO parent VALUES (1,1), (2,2);
|
||||||
|
INSERT INTO child VALUES (1,1), (2,2);
|
||||||
|
UPDATE grandparent SET id = 3 WHERE id = 1;
|
||||||
|
SELECT COUNT(*) = 1 FROM parent WHERE grandparent_id = 3;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 1 FROM child WHERE grandparent_id = 3;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
||||||
|
DROP TABLE grandparent;
|
23
mysql-test/suite/galera/r/galera_fk_conflict.result
Normal file
23
mysql-test/suite/galera/r/galera_fk_conflict.result
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
CREATE TABLE parent (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO parent VALUES (1), (2);
|
||||||
|
INSERT INTO child VALUES (1,1);
|
||||||
|
SET AUTOCOMMIT = OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
DELETE FROM parent WHERE id = 2;
|
||||||
|
SET AUTOCOMMIT = OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO child VALUES (2, 2);
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
25
mysql-test/suite/galera/r/galera_fk_mismatch.result
Normal file
25
mysql-test/suite/galera/r/galera_fk_mismatch.result
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
CREATE TABLE parent (
|
||||||
|
id1 INT,
|
||||||
|
id2 INT,
|
||||||
|
PRIMARY KEY (id1, id2) /* Multipart PK */
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
parent_id1 INT,
|
||||||
|
FOREIGN KEY (parent_id1)
|
||||||
|
REFERENCES parent(id1) /* FK is subset of PK above */
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO parent VALUES (1, 2);
|
||||||
|
INSERT INTO child VALUES (1, 1);
|
||||||
|
UPDATE parent SET id1 = 3 WHERE id1 = 1;
|
||||||
|
SELECT COUNT(*) = 1 FROM child WHERE parent_id1 = 3;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
DELETE FROM parent WHERE id1 = 3;
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE parent_id1 = 3;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
35
mysql-test/suite/galera/r/galera_fk_multicolumn.result
Normal file
35
mysql-test/suite/galera/r/galera_fk_multicolumn.result
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
CREATE TABLE t0 (
|
||||||
|
f1 INT PRIMARY KEY,
|
||||||
|
f2 INT UNIQUE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
f1 INT PRIMARY KEY,
|
||||||
|
FOREIGN KEY (f1)
|
||||||
|
REFERENCES t0(f1)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
f2 INT PRIMARY KEY,
|
||||||
|
FOREIGN KEY (f2)
|
||||||
|
REFERENCES t0(f2)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
INSERT INTO t0 VALUES (0, 0);
|
||||||
|
INSERT INTO t1 VALUES (0);
|
||||||
|
INSERT INTO t2 VALUES (0);
|
||||||
|
UPDATE t0 SET f1 = 1, f2 = 2;
|
||||||
|
SELECT f1 = 1 FROM t1 WHERE f1 = 1;
|
||||||
|
f1 = 1
|
||||||
|
1
|
||||||
|
SELECT f2 = 2 FROM t2 WHERE f2 = 2;
|
||||||
|
f2 = 2
|
||||||
|
1
|
||||||
|
SELECT f1 = 1 FROM t1;
|
||||||
|
f1 = 1
|
||||||
|
1
|
||||||
|
SELECT f2 = 2 FROM t2;
|
||||||
|
f2 = 2
|
||||||
|
1
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t0;
|
22
mysql-test/suite/galera/r/galera_fk_multitable.result
Normal file
22
mysql-test/suite/galera/r/galera_fk_multitable.result
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
CREATE TABLE t0 (
|
||||||
|
f0 INT PRIMARY KEY
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
f1 INT PRIMARY KEY,
|
||||||
|
f0 INTEGER,
|
||||||
|
FOREIGN KEY (f0)
|
||||||
|
REFERENCES t0(f0)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
INSERT INTO t0 VALUES (0), (1);
|
||||||
|
INSERT INTO t1 VALUES (0, 0);
|
||||||
|
INSERT INTO t1 VALUES (1, 0);
|
||||||
|
DELETE t0.*, t1.* FROM t0, t1 WHERE t0.f0 = 0 AND t1.f1 = 0;
|
||||||
|
SELECT COUNT(*) = 1 FROM t0;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t0;
|
28
mysql-test/suite/galera/r/galera_fk_no_pk.result
Normal file
28
mysql-test/suite/galera/r/galera_fk_no_pk.result
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
CREATE TABLE parent (
|
||||||
|
id INT,
|
||||||
|
KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO parent VALUES (1), (1), (2), (2);
|
||||||
|
INSERT INTO child VALUES (1,1), (2,2), (1,1), (2,2);
|
||||||
|
DELETE FROM parent WHERE id = 1;
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE id = 1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
UPDATE parent SET id = 3 WHERE id = 2;
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE parent_id = 1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
SELECT parent_id = 3 FROM child WHERE id = 2;
|
||||||
|
parent_id = 3
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
13
mysql-test/suite/galera/r/galera_fk_selfreferential.result
Normal file
13
mysql-test/suite/galera/r/galera_fk_selfreferential.result
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
f1 INT NOT NULL PRIMARY KEY,
|
||||||
|
f2 INT,
|
||||||
|
FOREIGN KEY (f2)
|
||||||
|
REFERENCES t1(f1)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1, 1), (2, 1);
|
||||||
|
DELETE FROM t1 WHERE f1 = 1;
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
30
mysql-test/suite/galera/r/galera_fk_setnull.result
Normal file
30
mysql-test/suite/galera/r/galera_fk_setnull.result
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
CREATE TABLE parent (
|
||||||
|
id INT NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
ON UPDATE SET NULL
|
||||||
|
ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO parent VALUES (1),(2);
|
||||||
|
INSERT INTO child VALUES (1,1),(2,2);
|
||||||
|
DELETE FROM parent WHERE id = 1;
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 1;
|
||||||
|
parent_id IS NULL
|
||||||
|
1
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 1;
|
||||||
|
parent_id IS NULL
|
||||||
|
1
|
||||||
|
UPDATE parent SET id = 3 WHERE id = 2;
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 2;
|
||||||
|
parent_id IS NULL
|
||||||
|
1
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 2;
|
||||||
|
parent_id IS NULL
|
||||||
|
1
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
1050
mysql-test/suite/galera/r/galera_many_columns.result
Normal file
1050
mysql-test/suite/galera/r/galera_many_columns.result
Normal file
File diff suppressed because it is too large
Load Diff
123
mysql-test/suite/galera/r/galera_many_indexes.result
Normal file
123
mysql-test/suite/galera/r/galera_many_indexes.result
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
CREATE TABLE t1 (f1 VARCHAR(767) PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
CREATE UNIQUE INDEX i63 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i62 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i61 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i60 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i59 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i58 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i57 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i56 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i55 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i54 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i53 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i52 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i51 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i50 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i49 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i48 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i47 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i46 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i45 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i44 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i43 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i42 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i41 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i40 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i39 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i38 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i37 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i36 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i35 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i34 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i33 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i32 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i31 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i30 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i29 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i28 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i27 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i26 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i25 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i24 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i23 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i22 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i21 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i20 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i19 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i18 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i17 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i16 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i15 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i14 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i13 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i12 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i11 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i10 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i9 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i8 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i7 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i6 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i5 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i4 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i3 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i2 ON t1(f1);
|
||||||
|
CREATE UNIQUE INDEX i1 ON t1(f1);
|
||||||
|
INSERT INTO t1 VALUES (REPEAT('a', 767));
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
SELECT LENGTH(f1) = 767 FROM t1;
|
||||||
|
LENGTH(f1) = 767
|
||||||
|
1
|
||||||
|
EXPLAIN SELECT COUNT(*) = 1 FROM t1 FORCE KEY (PRIMARY) WHERE f1 = REPEAT('a', 767);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 const PRIMARY PRIMARY 769 const 1 Using index
|
||||||
|
SELECT COUNT(*) = 1 FROM t1 FORCE KEY (PRIMARY) WHERE f1 = REPEAT('a', 767);
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
EXPLAIN SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i1) WHERE f1 = REPEAT('a', 767);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 const i1 i1 769 const 1 Using index
|
||||||
|
SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i1) WHERE f1 = REPEAT('a', 767);
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
EXPLAIN SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i63) WHERE f1 = REPEAT('a', 767);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 const i63 i63 769 const 1 Using index
|
||||||
|
SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i63) WHERE f1 = REPEAT('a', 767);
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
INSERT INTO t1 VALUES (REPEAT('b', 767));
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
COUNT(*) = 2
|
||||||
|
1
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
DELETE FROM t1 WHERE f1 = REPEAT('b', 767);
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
INSERT INTO t1 (f1) VALUES (REPEAT('c', 767));
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
START TRANSACTION;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
START TRANSACTION;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET f1 = REPEAT('e', 767);
|
||||||
|
UPDATE t1 SET f1 = REPEAT('f', 767);
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
DROP TABLE t1;
|
41
mysql-test/suite/galera/r/galera_many_rows.result
Normal file
41
mysql-test/suite/galera/r/galera_many_rows.result
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
CREATE TABLE ten (f1 INTEGER) ENGINE=INNODB;
|
||||||
|
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
||||||
|
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
|
||||||
|
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
|
||||||
|
SELECT COUNT(*) = 100000 FROM t1;
|
||||||
|
COUNT(*) = 100000
|
||||||
|
1
|
||||||
|
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
COUNT(*) = 200000
|
||||||
|
1
|
||||||
|
UPDATE t1 SET f2 = 1;
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1 WHERE f2 = 1;
|
||||||
|
COUNT(*) = 200000
|
||||||
|
1
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
COUNT(*) = 200000
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
COUNT(*) = 200000
|
||||||
|
1
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET f2 = 2;
|
||||||
|
ROLLBACK;
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
COUNT(*) = 200000
|
||||||
|
1
|
||||||
|
UPDATE t1 SET f2 = 3;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET f2 = 4;
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE ten;
|
27
mysql-test/suite/galera/r/galera_nopk_bit.result
Normal file
27
mysql-test/suite/galera/r/galera_nopk_bit.result
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
CREATE TABLE t1 (f1 BIT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL),(0),(b'1');
|
||||||
|
SELECT f1 IS NULL, f1 = b'1' FROM t1;
|
||||||
|
f1 IS NULL f1 = b'1'
|
||||||
|
1 NULL
|
||||||
|
0 0
|
||||||
|
0 1
|
||||||
|
DELETE FROM t1 WHERE f1 = b'1';
|
||||||
|
UPDATE t1 SET f1 = b'1' WHERE f1 IS NULL;
|
||||||
|
UPDATE t1 SET f1 = 1 WHERE f1 = b'0';
|
||||||
|
SELECT f1 IS NULL, f1 = b'1' FROM t1;
|
||||||
|
f1 IS NULL f1 = b'1'
|
||||||
|
0 1
|
||||||
|
0 1
|
||||||
|
CREATE TABLE t2 (f1 BIT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (NULL);
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 0 WHERE f1 IS NULL;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 1 WHERE f1 IS NULL;
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
27
mysql-test/suite/galera/r/galera_nopk_blob.result
Normal file
27
mysql-test/suite/galera/r/galera_nopk_blob.result
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
CREATE TABLE t1 (f1 BLOB) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL),('abc');
|
||||||
|
SELECT f1 FROM t1;
|
||||||
|
f1
|
||||||
|
NULL
|
||||||
|
abc
|
||||||
|
DELETE FROM t1 WHERE f1 IS NULL;
|
||||||
|
UPDATE t1 SET f1 = 'xyz' WHERE f1 = 'abc';
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
SELECT f1 = 'abc' FROM t1;
|
||||||
|
f1 = 'abc'
|
||||||
|
0
|
||||||
|
CREATE TABLE t2 (f1 BLOB) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (NULL);
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'abc' WHERE f1 IS NULL;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'xyz' WHERE f1 IS NULL;
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
30
mysql-test/suite/galera/r/galera_nopk_large_varchar.result
Normal file
30
mysql-test/suite/galera/r/galera_nopk_large_varchar.result
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
CREATE TABLE t1 (f1 VARCHAR(8000)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL),(CONCAT(REPEAT('x', 7999), 'a'));
|
||||||
|
SELECT LENGTH(f1) FROM t1;
|
||||||
|
LENGTH(f1)
|
||||||
|
NULL
|
||||||
|
8000
|
||||||
|
DELETE FROM t1 WHERE f1 IS NULL;
|
||||||
|
UPDATE t1 SET f1 = CONCAT(REPEAT('x', 7999), 'b') WHERE f1 = CONCAT(REPEAT('x', 7999), 'a');
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
SELECT LENGTH(f1) = 8000 FROM t1;
|
||||||
|
LENGTH(f1) = 8000
|
||||||
|
1
|
||||||
|
SELECT f1 = CONCAT(REPEAT('x', 7999), 'b') FROM t1;
|
||||||
|
f1 = CONCAT(REPEAT('x', 7999), 'b')
|
||||||
|
1
|
||||||
|
CREATE TABLE t2 (f1 BLOB) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (CONCAT(REPEAT('x', 7999), 'a'));
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'abc' WHERE f1 = CONCAT(REPEAT('x', 7999), 'a');
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'xyz' WHERE f1 = CONCAT(REPEAT('x', 7999), 'a');
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
46
mysql-test/suite/galera/r/galera_unicode_identifiers.result
Normal file
46
mysql-test/suite/galera/r/galera_unicode_identifiers.result
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
SET GLOBAL wsrep_sync_wait = 7;
|
||||||
|
SET GLOBAL wsrep_sync_wait = 7;
|
||||||
|
CREATE DATABASE `database with space`;
|
||||||
|
USE `database with space`;
|
||||||
|
CREATE TABLE `table with space` (
|
||||||
|
`column with space` INTEGER AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
`second column with space` INTEGER,
|
||||||
|
UNIQUE `index name with space` (`second column with space`)
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
INSERT INTO `table with space` VALUES (DEFAULT, 1);
|
||||||
|
CREATE DATABASE `база`;
|
||||||
|
USE `база`;
|
||||||
|
CREATE TABLE `таблица` (
|
||||||
|
`първа_колона` INTEGER PRIMARY KEY,
|
||||||
|
`втора_колона` INTEGER,
|
||||||
|
UNIQUE `индекс` (`втора_колона`)
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
INSERT INTO `таблица` VALUES (1, 1);
|
||||||
|
CREATE DATABASE `втора база`;
|
||||||
|
USE `втора база`;
|
||||||
|
CREATE TABLE `втора таблица` (
|
||||||
|
`първа колона` INTEGER,
|
||||||
|
`втора колона` INTEGER,
|
||||||
|
KEY `първи индекс` (`първа колона`)
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
INSERT INTO `втора таблица` VALUES (1, 1);
|
||||||
|
USE `database with space`;
|
||||||
|
SELECT * FROM `table with space`;
|
||||||
|
column with space second column with space
|
||||||
|
1 1
|
||||||
|
USE `база`;
|
||||||
|
SELECT * FROM `таблица`;
|
||||||
|
първа_колона втора_колона
|
||||||
|
1 1
|
||||||
|
USE `втора база`;
|
||||||
|
SELECT * FROM `втора таблица`;
|
||||||
|
първа колона втора колона
|
||||||
|
1 1
|
||||||
|
SET GLOBAL wsrep_sync_wait = (SELECT @@wsrep_sync_wait);
|
||||||
|
DROP TABLE `database with space`.`table with space`;
|
||||||
|
DROP TABLE `база`.`таблица`;
|
||||||
|
DROP TABLE `втора база`.`втора таблица`;
|
||||||
|
DROP DATABASE `database with space`;
|
||||||
|
DROP DATABASE `база`;
|
||||||
|
DROP DATABASE `втора база`;
|
||||||
|
SET GLOBAL wsrep_sync_wait = (SELECT @@wsrep_sync_wait);
|
@ -0,0 +1,67 @@
|
|||||||
|
SET GLOBAL wsrep_auto_increment_control = OFF;
|
||||||
|
SET GLOBAL auto_increment_increment = 1;
|
||||||
|
SET GLOBAL auto_increment_offset = 1;
|
||||||
|
SET GLOBAL wsrep_auto_increment_control = OFF;
|
||||||
|
SET GLOBAL auto_increment_increment = 1;
|
||||||
|
SET GLOBAL auto_increment_offset = 1;
|
||||||
|
SELECT @@auto_increment_increment = 1;
|
||||||
|
@@auto_increment_increment = 1
|
||||||
|
1
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
@@auto_increment_offset = 1
|
||||||
|
1
|
||||||
|
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, node VARCHAR(10)) ENGINE=InnoDB;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`node` varchar(10) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`f1`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`node` varchar(10) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`f1`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
|
SELECT @@auto_increment_increment = 1;
|
||||||
|
@@auto_increment_increment = 1
|
||||||
|
1
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
@@auto_increment_offset = 1
|
||||||
|
1
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (node) VALUES ('node1');
|
||||||
|
SELECT f1 FROM t1;
|
||||||
|
f1
|
||||||
|
1
|
||||||
|
SELECT @@auto_increment_increment = 1;
|
||||||
|
@@auto_increment_increment = 1
|
||||||
|
1
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
@@auto_increment_offset = 1
|
||||||
|
1
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (node) VALUES ('node2');
|
||||||
|
SELECT f1 FROM t1;
|
||||||
|
f1
|
||||||
|
1
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
SELECT * FROM t1;
|
||||||
|
f1 node
|
||||||
|
1 node1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
f1 node
|
||||||
|
1 node1
|
||||||
|
SET GLOBAL wsrep_auto_increment_control = 1;
|
||||||
|
SET GLOBAL auto_increment_increment = 2;
|
||||||
|
SET GLOBAL auto_increment_offset = 1;
|
||||||
|
SET GLOBAL wsrep_auto_increment_control = 1;
|
||||||
|
SET GLOBAL auto_increment_increment = 2;
|
||||||
|
SET GLOBAL auto_increment_offset = 2;
|
||||||
|
DROP TABLE t1;
|
@ -0,0 +1,44 @@
|
|||||||
|
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, node VARCHAR(10)) ENGINE=InnoDB;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`node` varchar(10) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`f1`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
|
SELECT @@auto_increment_increment = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size');
|
||||||
|
@@auto_increment_increment = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size')
|
||||||
|
1
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
@@auto_increment_offset = 1
|
||||||
|
1
|
||||||
|
INSERT INTO t1 VALUES (DEFAULT, 'node1');;
|
||||||
|
INSERT INTO t1 VALUES (DEFAULT, 'node2');;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`node` varchar(10) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`f1`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
|
||||||
|
SELECT @@auto_increment_increment = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size');
|
||||||
|
@@auto_increment_increment = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size')
|
||||||
|
1
|
||||||
|
SELECT @@auto_increment_offset = 2;
|
||||||
|
@@auto_increment_offset = 2
|
||||||
|
1
|
||||||
|
INSERT INTO t1 VALUES (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2');;
|
||||||
|
INSERT INTO t1 VALUES (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1');;
|
||||||
|
SELECT COUNT(*) = 22 FROM t1;
|
||||||
|
COUNT(*) = 22
|
||||||
|
1
|
||||||
|
SELECT COUNT(DISTINCT f1) = 22 FROM t1;
|
||||||
|
COUNT(DISTINCT f1) = 22
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 22 FROM t1;
|
||||||
|
COUNT(*) = 22
|
||||||
|
1
|
||||||
|
SELECT COUNT(DISTINCT f1) = 22 FROM t1;
|
||||||
|
COUNT(DISTINCT f1) = 22
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
@ -0,0 +1,21 @@
|
|||||||
|
SET GLOBAL wsrep_certify_nonPK = OFF;
|
||||||
|
SET GLOBAL wsrep_certify_nonPK = OFF;
|
||||||
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB /* Table has no primary key */;
|
||||||
|
CREATE TABLE t2 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
INSERT INTO t2 VALUES (1), (2);
|
||||||
|
UPDATE t2 SET f1 = 3 WHERE f1 = 1;
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 2 FROM t2;
|
||||||
|
COUNT(*) = 2
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 1 FROM t2 WHERE f1 = 3;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
SET GLOBAL wsrep_certify_nonPK = 1;
|
||||||
|
SET GLOBAL wsrep_certify_nonPK = 1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
26
mysql-test/suite/galera/r/galera_var_fkchecks.result
Normal file
26
mysql-test/suite/galera/r/galera_var_fkchecks.result
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
CREATE TABLE parent (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO parent VALUES (1);
|
||||||
|
INSERT INTO child VALUES (1,1);
|
||||||
|
SET SESSION foreign_key_checks = 0;
|
||||||
|
INSERT INTO child VALUES (2,2);
|
||||||
|
SELECT COUNT(*) = 1 FROM child WHERE id = 2;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
INSERT INTO child VALUES (3,3);
|
||||||
|
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
|
||||||
|
SET SESSION foreign_key_checks = 0;
|
||||||
|
DELETE FROM parent;
|
||||||
|
SELECT COUNT(*) = 0 FROM parent;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
@ -0,0 +1,12 @@
|
|||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
SET GLOBAL wsrep_mysql_replication_bundle = 2;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
0
|
||||||
|
INSERT INTO t1 VALUES (2);
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
COUNT(*) = 2
|
||||||
|
1
|
||||||
|
SET GLOBAL wsrep_mysql_replication_bundle = 0;
|
||||||
|
DROP TABLE t1;
|
@ -0,0 +1,8 @@
|
|||||||
|
SET GLOBAL wsrep_replicate_myisam = FALSE;
|
||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
SET GLOBAL wsrep_replicate_myisam = 0;
|
||||||
|
DROP TABLE t1;
|
@ -0,0 +1,8 @@
|
|||||||
|
SET GLOBAL wsrep_replicate_myisam = TRUE;
|
||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
COUNT(*) = 1
|
||||||
|
1
|
||||||
|
SET GLOBAL wsrep_replicate_myisam = 0;
|
||||||
|
DROP TABLE t1;
|
21
mysql-test/suite/galera/r/galera_var_sync_wait.result
Normal file
21
mysql-test/suite/galera/r/galera_var_sync_wait.result
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
SET GLOBAL wsrep_sync_wait = 1;
|
||||||
|
SHOW TABLES LIKE '%t1';
|
||||||
|
Tables_in_test (%t1)
|
||||||
|
t1
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
CREATE TABLE t2 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
SET GLOBAL wsrep_sync_wait = 4;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
CREATE TABLE t3 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
INSERT INTO t3 VALUES (1);
|
||||||
|
SET GLOBAL wsrep_sync_wait = 2;
|
||||||
|
UPDATE t3 SET f1 = 2;
|
||||||
|
affected rows: 1
|
||||||
|
info: Rows matched: 1 Changed: 1 Warnings: 0
|
||||||
|
SET GLOBAL wsrep_sync_wait = 7;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
41
mysql-test/suite/galera/t/galera_fk_cascade_delete.test
Normal file
41
mysql-test/suite/galera/t/galera_fk_cascade_delete.test
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# Test Foreign Key Cascading DELETEs
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE grandparent (
|
||||||
|
id INT NOT NULL PRIMARY KEY
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
grandparent_id INT,
|
||||||
|
FOREIGN KEY (grandparent_id)
|
||||||
|
REFERENCES grandparent(id)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO grandparent VALUES (1),(2);
|
||||||
|
INSERT INTO parent VALUES (1,1), (2,2);
|
||||||
|
INSERT INTO child VALUES (1,1), (2,2);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
DELETE FROM grandparent WHERE id = 1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 0 FROM parent WHERE grandparent_id = 1;
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE parent_id = 1;
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
||||||
|
DROP TABLE grandparent;
|
41
mysql-test/suite/galera/t/galera_fk_cascade_update.test
Normal file
41
mysql-test/suite/galera/t/galera_fk_cascade_update.test
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# Test Foreign Key Cascading UPDATEs
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE grandparent (
|
||||||
|
id INT NOT NULL PRIMARY KEY
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
grandparent_id INT,
|
||||||
|
FOREIGN KEY (grandparent_id)
|
||||||
|
REFERENCES grandparent(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
grandparent_id INT,
|
||||||
|
FOREIGN KEY (grandparent_id)
|
||||||
|
REFERENCES parent(grandparent_id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO grandparent VALUES (1),(2);
|
||||||
|
INSERT INTO parent VALUES (1,1), (2,2);
|
||||||
|
INSERT INTO child VALUES (1,1), (2,2);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
UPDATE grandparent SET id = 3 WHERE id = 1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 1 FROM parent WHERE grandparent_id = 3;
|
||||||
|
SELECT COUNT(*) = 1 FROM child WHERE grandparent_id = 3;
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
||||||
|
DROP TABLE grandparent;
|
41
mysql-test/suite/galera/t/galera_fk_conflict.test
Normal file
41
mysql-test/suite/galera/t/galera_fk_conflict.test
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# Test two transactions on separate nodes which conflict on a FK
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO parent VALUES (1), (2);
|
||||||
|
INSERT INTO child VALUES (1,1);
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET AUTOCOMMIT = OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
DELETE FROM parent WHERE id = 2;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET AUTOCOMMIT = OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO child VALUES (2, 2);
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
38
mysql-test/suite/galera/t/galera_fk_mismatch.test
Normal file
38
mysql-test/suite/galera/t/galera_fk_mismatch.test
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#
|
||||||
|
# Test the operation where the definition of the FK is different from the one of the underlying key
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id1 INT,
|
||||||
|
id2 INT,
|
||||||
|
PRIMARY KEY (id1, id2) /* Multipart PK */
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
parent_id1 INT,
|
||||||
|
FOREIGN KEY (parent_id1)
|
||||||
|
REFERENCES parent(id1) /* FK is subset of PK above */
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO parent VALUES (1, 2);
|
||||||
|
INSERT INTO child VALUES (1, 1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
UPDATE parent SET id1 = 3 WHERE id1 = 1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 1 FROM child WHERE parent_id1 = 3;
|
||||||
|
|
||||||
|
DELETE FROM parent WHERE id1 = 3;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE parent_id1 = 3;
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
42
mysql-test/suite/galera/t/galera_fk_multicolumn.test
Normal file
42
mysql-test/suite/galera/t/galera_fk_multicolumn.test
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#
|
||||||
|
# Test UPDATE on multiple columns with multiple FKs
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t0 (
|
||||||
|
f1 INT PRIMARY KEY,
|
||||||
|
f2 INT UNIQUE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
f1 INT PRIMARY KEY,
|
||||||
|
FOREIGN KEY (f1)
|
||||||
|
REFERENCES t0(f1)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
f2 INT PRIMARY KEY,
|
||||||
|
FOREIGN KEY (f2)
|
||||||
|
REFERENCES t0(f2)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO t0 VALUES (0, 0);
|
||||||
|
INSERT INTO t1 VALUES (0);
|
||||||
|
INSERT INTO t2 VALUES (0);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
UPDATE t0 SET f1 = 1, f2 = 2;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT f1 = 1 FROM t1 WHERE f1 = 1;
|
||||||
|
SELECT f2 = 2 FROM t2 WHERE f2 = 2;
|
||||||
|
SELECT f1 = 1 FROM t1;
|
||||||
|
SELECT f2 = 2 FROM t2;
|
||||||
|
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t0;
|
32
mysql-test/suite/galera/t/galera_fk_multitable.test
Normal file
32
mysql-test/suite/galera/t/galera_fk_multitable.test
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#
|
||||||
|
# Test multi-table DELETE in the presence of FKs
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t0 (
|
||||||
|
f0 INT PRIMARY KEY
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
f1 INT PRIMARY KEY,
|
||||||
|
f0 INTEGER,
|
||||||
|
FOREIGN KEY (f0)
|
||||||
|
REFERENCES t0(f0)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO t0 VALUES (0), (1);
|
||||||
|
INSERT INTO t1 VALUES (0, 0);
|
||||||
|
INSERT INTO t1 VALUES (1, 0);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
DELETE t0.*, t1.* FROM t0, t1 WHERE t0.f0 = 0 AND t1.f1 = 0;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 1 FROM t0;
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t0;
|
37
mysql-test/suite/galera/t/galera_fk_no_pk.test
Normal file
37
mysql-test/suite/galera/t/galera_fk_no_pk.test
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#
|
||||||
|
# Test foreign keys if no PK is present
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT,
|
||||||
|
KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
ON UPDATE CASCADE
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO parent VALUES (1), (1), (2), (2);
|
||||||
|
INSERT INTO child VALUES (1,1), (2,2), (1,1), (2,2);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
DELETE FROM parent WHERE id = 1;
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE id = 1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
UPDATE parent SET id = 3 WHERE id = 2;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 0 FROM child WHERE parent_id = 1;
|
||||||
|
SELECT parent_id = 3 FROM child WHERE id = 2;
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
24
mysql-test/suite/galera/t/galera_fk_selfreferential.test
Normal file
24
mysql-test/suite/galera/t/galera_fk_selfreferential.test
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#
|
||||||
|
# Test self-referential foreign keys
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
f1 INT NOT NULL PRIMARY KEY,
|
||||||
|
f2 INT,
|
||||||
|
FOREIGN KEY (f2)
|
||||||
|
REFERENCES t1(f1)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1, 1), (2, 1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
DELETE FROM t1 WHERE f1 = 1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
36
mysql-test/suite/galera/t/galera_fk_setnull.test
Normal file
36
mysql-test/suite/galera/t/galera_fk_setnull.test
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
ON UPDATE SET NULL
|
||||||
|
ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO parent VALUES (1),(2);
|
||||||
|
INSERT INTO child VALUES (1,1),(2,2);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
DELETE FROM parent WHERE id = 1;
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 1;
|
||||||
|
|
||||||
|
UPDATE parent SET id = 3 WHERE id = 2;
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 2;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT parent_id IS NULL FROM child WHERE id = 2;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
65
mysql-test/suite/galera/t/galera_many_columns.test
Normal file
65
mysql-test/suite/galera/t/galera_many_columns.test
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
--source include/big_test.inc
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1017 VARCHAR(3) DEFAULT 'ABC') ENGINE=InnoDB;
|
||||||
|
|
||||||
|
--let $count = 1016
|
||||||
|
while ($count)
|
||||||
|
{
|
||||||
|
--disable_query_log
|
||||||
|
--eval SET @ddl_var1 = CONCAT("ALTER TABLE t1 ADD COLUMN f", $count, " VARCHAR(3) DEFAULT 'ABC'")
|
||||||
|
--let $ddl_var = `SELECT @ddl_var1`
|
||||||
|
--enable_query_log
|
||||||
|
--eval $ddl_var
|
||||||
|
--dec $count
|
||||||
|
}
|
||||||
|
|
||||||
|
ALTER TABLE t1 ADD PRIMARY KEY (f1, f1017);
|
||||||
|
|
||||||
|
INSERT INTO t1 (f1) VALUES (DEFAULT);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT f1 = 'ABC', f1017 = 'ABC' FROM t1;
|
||||||
|
UPDATE t1 SET f1 = 'XYZ', f1017 = 'XYZ' ;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT f1 = 'XYZ', f1017 = 'XYZ' FROM t1 WHERE f1 = 'XYZ' AND f1017 = 'XYZ';
|
||||||
|
|
||||||
|
|
||||||
|
# Deadlock
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET f2 = 'KLM' WHERE f1 = 'XYZ' AND f1017 = 'XYZ';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET f2 = 'CDE' WHERE f1 = 'XYZ' AND f1017 = 'XYZ';
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
# Rollback
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f1, f1017) VALUES ('BCE','BCE');
|
||||||
|
INSERT INTO t1 (f1, f1017) VALUES ('CED','CED');
|
||||||
|
INSERT INTO t1 (f1, f1017) VALUES ('EDF','EDF');
|
||||||
|
INSERT INTO t1 (f1, f1017) VALUES ('FED','FED');
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
74
mysql-test/suite/galera/t/galera_many_indexes.test
Normal file
74
mysql-test/suite/galera/t/galera_many_indexes.test
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 VARCHAR(767) PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
# MySQL complains about multiple identical indexes on the same column
|
||||||
|
--disable_warnings
|
||||||
|
|
||||||
|
--let $count = 63
|
||||||
|
while ($count)
|
||||||
|
{
|
||||||
|
--disable_query_log
|
||||||
|
--eval SET @ddl_var1 = CONCAT("CREATE UNIQUE INDEX i", $count, " ON t1(f1)")
|
||||||
|
--let $ddl_var = `SELECT @ddl_var1`
|
||||||
|
--enable_query_log
|
||||||
|
--eval $ddl_var
|
||||||
|
--dec $count
|
||||||
|
}
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (REPEAT('a', 767));
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
SELECT LENGTH(f1) = 767 FROM t1;
|
||||||
|
|
||||||
|
EXPLAIN SELECT COUNT(*) = 1 FROM t1 FORCE KEY (PRIMARY) WHERE f1 = REPEAT('a', 767);
|
||||||
|
SELECT COUNT(*) = 1 FROM t1 FORCE KEY (PRIMARY) WHERE f1 = REPEAT('a', 767);
|
||||||
|
|
||||||
|
EXPLAIN SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i1) WHERE f1 = REPEAT('a', 767);
|
||||||
|
SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i1) WHERE f1 = REPEAT('a', 767);
|
||||||
|
|
||||||
|
EXPLAIN SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i63) WHERE f1 = REPEAT('a', 767);
|
||||||
|
SELECT COUNT(*) = 1 FROM t1 FORCE KEY (i63) WHERE f1 = REPEAT('a', 767);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (REPEAT('b', 767));
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
DELETE FROM t1 WHERE f1 = REPEAT('b', 767);
|
||||||
|
|
||||||
|
# Rollback
|
||||||
|
--connection node_1
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
INSERT INTO t1 (f1) VALUES (REPEAT('c', 767));
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
START TRANSACTION;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
|
||||||
|
# Deadlock
|
||||||
|
--connection node_1
|
||||||
|
START TRANSACTION;
|
||||||
|
--connection node_2
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
UPDATE t1 SET f1 = REPEAT('e', 767);
|
||||||
|
--connection node_2
|
||||||
|
UPDATE t1 SET f1 = REPEAT('f', 767);
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
COMMIT;
|
||||||
|
--connection node_2
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
55
mysql-test/suite/galera/t/galera_many_rows.test
Normal file
55
mysql-test/suite/galera/t/galera_many_rows.test
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
--source include/big_test.inc
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE ten (f1 INTEGER) ENGINE=INNODB;
|
||||||
|
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) Engine=InnoDB;
|
||||||
|
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 100000 FROM t1;
|
||||||
|
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
UPDATE t1 SET f2 = 1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1 WHERE f2 = 1;
|
||||||
|
|
||||||
|
# Rollback
|
||||||
|
--connection node_1
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f2) SELECT a1.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET f2 = 2;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT COUNT(*) = 200000 FROM t1;
|
||||||
|
UPDATE t1 SET f2 = 3;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET f2 = 4;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE ten;
|
46
mysql-test/suite/galera/t/galera_nopk_bit.test
Normal file
46
mysql-test/suite/galera/t/galera_nopk_bit.test
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#
|
||||||
|
# This checks that even tables with a single BIT column are replicated properly without a PK
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 BIT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL),(0),(b'1');
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT f1 IS NULL, f1 = b'1' FROM t1;
|
||||||
|
|
||||||
|
DELETE FROM t1 WHERE f1 = b'1';
|
||||||
|
UPDATE t1 SET f1 = b'1' WHERE f1 IS NULL;
|
||||||
|
UPDATE t1 SET f1 = 1 WHERE f1 = b'0';
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT f1 IS NULL, f1 = b'1' FROM t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Provoke a conflict
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
CREATE TABLE t2 (f1 BIT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (NULL);
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 0 WHERE f1 IS NULL;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 1 WHERE f1 IS NULL;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
46
mysql-test/suite/galera/t/galera_nopk_blob.test
Normal file
46
mysql-test/suite/galera/t/galera_nopk_blob.test
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#
|
||||||
|
# This checks that even tables with a single BLOB column and no FK are replicated properly
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 BLOB) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL),('abc');
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT f1 FROM t1;
|
||||||
|
|
||||||
|
DELETE FROM t1 WHERE f1 IS NULL;
|
||||||
|
UPDATE t1 SET f1 = 'xyz' WHERE f1 = 'abc';
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
SELECT f1 = 'abc' FROM t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Provoke a conflict
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
CREATE TABLE t2 (f1 BLOB) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (NULL);
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'abc' WHERE f1 IS NULL;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'xyz' WHERE f1 IS NULL;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
50
mysql-test/suite/galera/t/galera_nopk_large_varchar.test
Normal file
50
mysql-test/suite/galera/t/galera_nopk_large_varchar.test
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#
|
||||||
|
# This checks that even tables with a single long VARCHARcolumn and no FK are replicated properly
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
# From the Innodb manual: "The maximum row length, except for variable-length columns (VARBINARY, VARCHAR, BLOB and TEXT),
|
||||||
|
# is slightly less than half of a database page. That is, the maximum row length is about 8000 bytes"
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 VARCHAR(8000)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL),(CONCAT(REPEAT('x', 7999), 'a'));
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT LENGTH(f1) FROM t1;
|
||||||
|
|
||||||
|
DELETE FROM t1 WHERE f1 IS NULL;
|
||||||
|
UPDATE t1 SET f1 = CONCAT(REPEAT('x', 7999), 'b') WHERE f1 = CONCAT(REPEAT('x', 7999), 'a');
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
SELECT LENGTH(f1) = 8000 FROM t1;
|
||||||
|
SELECT f1 = CONCAT(REPEAT('x', 7999), 'b') FROM t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Provoke a conflict
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
CREATE TABLE t2 (f1 BLOB) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (CONCAT(REPEAT('x', 7999), 'a'));
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'abc' WHERE f1 = CONCAT(REPEAT('x', 7999), 'a');
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t2 SET f1 = 'xyz' WHERE f1 = CONCAT(REPEAT('x', 7999), 'a');
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
72
mysql-test/suite/galera/t/galera_unicode_identifiers.test
Normal file
72
mysql-test/suite/galera/t/galera_unicode_identifiers.test
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#
|
||||||
|
# Test non-ascii table, column and index names
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $wsrep_sync_wait_orig = (SELECT @@wsrep_sync_wait)
|
||||||
|
SET GLOBAL wsrep_sync_wait = 7;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET GLOBAL wsrep_sync_wait = 7;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
|
||||||
|
# Spaces in identifiers
|
||||||
|
|
||||||
|
CREATE DATABASE `database with space`;
|
||||||
|
USE `database with space`;
|
||||||
|
CREATE TABLE `table with space` (
|
||||||
|
`column with space` INTEGER AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
`second column with space` INTEGER,
|
||||||
|
UNIQUE `index name with space` (`second column with space`)
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
INSERT INTO `table with space` VALUES (DEFAULT, 1);
|
||||||
|
|
||||||
|
# Unicode identifiers
|
||||||
|
|
||||||
|
CREATE DATABASE `база`;
|
||||||
|
USE `база`;
|
||||||
|
CREATE TABLE `таблица` (
|
||||||
|
`първа_колона` INTEGER PRIMARY KEY,
|
||||||
|
`втора_колона` INTEGER,
|
||||||
|
UNIQUE `индекс` (`втора_колона`)
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO `таблица` VALUES (1, 1);
|
||||||
|
|
||||||
|
# Without a PK
|
||||||
|
|
||||||
|
CREATE DATABASE `втора база`;
|
||||||
|
USE `втора база`;
|
||||||
|
CREATE TABLE `втора таблица` (
|
||||||
|
`първа колона` INTEGER,
|
||||||
|
`втора колона` INTEGER,
|
||||||
|
KEY `първи индекс` (`първа колона`)
|
||||||
|
) ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO `втора таблица` VALUES (1, 1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
USE `database with space`;
|
||||||
|
SELECT * FROM `table with space`;
|
||||||
|
|
||||||
|
USE `база`;
|
||||||
|
SELECT * FROM `таблица`;
|
||||||
|
|
||||||
|
USE `втора база`;
|
||||||
|
SELECT * FROM `втора таблица`;
|
||||||
|
|
||||||
|
--eval SET GLOBAL wsrep_sync_wait = $wsrep_sync_wait_orig
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
DROP TABLE `database with space`.`table with space`;
|
||||||
|
DROP TABLE `база`.`таблица`;
|
||||||
|
DROP TABLE `втора база`.`втора таблица`;
|
||||||
|
|
||||||
|
DROP DATABASE `database with space`;
|
||||||
|
DROP DATABASE `база`;
|
||||||
|
DROP DATABASE `втора база`;
|
||||||
|
--eval SET GLOBAL wsrep_sync_wait = $wsrep_sync_wait_orig
|
||||||
|
|
101
mysql-test/suite/galera/t/galera_var_auto_inc_control_off.test
Normal file
101
mysql-test/suite/galera/t/galera_var_auto_inc_control_off.test
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
#
|
||||||
|
# Test wsrep_auto_increment_control = OFF
|
||||||
|
# We issue two concurrent INSERTs and one will fail with a deadlock error
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $auto_increment_control_orig = `SELECT @@wsrep_auto_increment_control`
|
||||||
|
|
||||||
|
#
|
||||||
|
# Preserve existing variable values
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $auto_increment_increment_node1 = `SELECT @@auto_increment_increment`
|
||||||
|
--let $auto_increment_offset_node1 = `SELECT @@auto_increment_offset`
|
||||||
|
|
||||||
|
# Restore stock MySQL defaults
|
||||||
|
SET GLOBAL wsrep_auto_increment_control = OFF;
|
||||||
|
SET GLOBAL auto_increment_increment = 1;
|
||||||
|
SET GLOBAL auto_increment_offset = 1;
|
||||||
|
|
||||||
|
#Open a fresh connection to node_1 so that the variables above take effect
|
||||||
|
--let $galera_connection_name = node_1a
|
||||||
|
--let $galera_server_number = 1
|
||||||
|
--source include/galera_connect.inc
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $auto_increment_increment_node2 = `SELECT @@auto_increment_increment`
|
||||||
|
--let $auto_increment_offset_node2 = `SELECT @@auto_increment_offset`
|
||||||
|
|
||||||
|
SET GLOBAL wsrep_auto_increment_control = OFF;
|
||||||
|
SET GLOBAL auto_increment_increment = 1;
|
||||||
|
SET GLOBAL auto_increment_offset = 1;
|
||||||
|
|
||||||
|
#Open a fresh connection to node_2
|
||||||
|
--let $galera_connection_name = node_2a
|
||||||
|
--let $galera_server_number = 2
|
||||||
|
--source include/galera_connect.inc
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
SELECT @@auto_increment_increment = 1;
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, node VARCHAR(10)) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
#
|
||||||
|
# We expect that SHOW CREATE TABLE on both nodes will return identical values
|
||||||
|
#
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
|
||||||
|
--connection node_2a
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
SELECT @@auto_increment_increment = 1;
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (node) VALUES ('node1');
|
||||||
|
SELECT f1 FROM t1;
|
||||||
|
|
||||||
|
--connection node_2a
|
||||||
|
SELECT @@auto_increment_increment = 1;
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (node) VALUES ('node2');
|
||||||
|
SELECT f1 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_2a
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
--connection node_2a
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Restore all variables as they were
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--eval SET GLOBAL wsrep_auto_increment_control = $auto_increment_control_orig
|
||||||
|
--eval SET GLOBAL auto_increment_increment = $auto_increment_increment_node1
|
||||||
|
--eval SET GLOBAL auto_increment_offset = $auto_increment_offset_node1
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--eval SET GLOBAL wsrep_auto_increment_control = $auto_increment_control_orig
|
||||||
|
--eval SET GLOBAL auto_increment_increment = $auto_increment_increment_node2
|
||||||
|
--eval SET GLOBAL auto_increment_offset = $auto_increment_offset_node2
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@ -0,0 +1,56 @@
|
|||||||
|
#
|
||||||
|
# Test the operation of wsrep_auto_increment_control = ON
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, node VARCHAR(10)) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
|
||||||
|
# auto_increment_increment is equal to the number of nodes
|
||||||
|
# auto_increment_offset is equal to the ID of the node
|
||||||
|
|
||||||
|
SELECT @@auto_increment_increment = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size');
|
||||||
|
SELECT @@auto_increment_offset = 1;
|
||||||
|
|
||||||
|
# Expect no conflicts
|
||||||
|
--send INSERT INTO t1 VALUES (DEFAULT, 'node1');
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--send INSERT INTO t1 VALUES (DEFAULT, 'node2');
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--reap
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--reap
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
SELECT @@auto_increment_increment = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size');
|
||||||
|
SELECT @@auto_increment_offset = 2;
|
||||||
|
|
||||||
|
# Expect no conflicts
|
||||||
|
--send INSERT INTO t1 VALUES (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2'), (DEFAULT, 'node2');
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--send INSERT INTO t1 VALUES (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1'), (DEFAULT, 'node1');
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--reap
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--reap
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 22 FROM t1;
|
||||||
|
SELECT COUNT(DISTINCT f1) = 22 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 22 FROM t1;
|
||||||
|
SELECT COUNT(DISTINCT f1) = 22 FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
39
mysql-test/suite/galera/t/galera_var_certify_nonPK_off.test
Normal file
39
mysql-test/suite/galera/t/galera_var_certify_nonPK_off.test
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#
|
||||||
|
# Test wsrep_certify_nonPK = OFF
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $wsrep_certify_nonPK_orig = `SELECT @@wsrep_certify_nonPK`
|
||||||
|
SET GLOBAL wsrep_certify_nonPK = OFF;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET GLOBAL wsrep_certify_nonPK = OFF;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB /* Table has no primary key */;
|
||||||
|
CREATE TABLE t2 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
# All DML without a PK is rejected with an error
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
|
||||||
|
# DML with a PK is allowed to proceed
|
||||||
|
INSERT INTO t2 VALUES (1), (2);
|
||||||
|
UPDATE t2 SET f1 = 3 WHERE f1 = 1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
SELECT COUNT(*) = 2 FROM t2;
|
||||||
|
SELECT COUNT(*) = 1 FROM t2 WHERE f1 = 3;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--eval SET GLOBAL wsrep_certify_nonPK = $wsrep_certify_nonPK_orig
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--eval SET GLOBAL wsrep_certify_nonPK = $wsrep_certify_nonPK_orig
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
40
mysql-test/suite/galera/t/galera_var_fkchecks.test
Normal file
40
mysql-test/suite/galera/t/galera_var_fkchecks.test
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#
|
||||||
|
# Test the operation on the foreign_key_checks variable
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE parent (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE child (
|
||||||
|
id INT PRIMARY KEY,
|
||||||
|
parent_id INT,
|
||||||
|
FOREIGN KEY (parent_id)
|
||||||
|
REFERENCES parent(id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO parent VALUES (1);
|
||||||
|
INSERT INTO child VALUES (1,1);
|
||||||
|
|
||||||
|
SET SESSION foreign_key_checks = 0;
|
||||||
|
|
||||||
|
INSERT INTO child VALUES (2,2);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 1 FROM child WHERE id = 2;
|
||||||
|
|
||||||
|
--error ER_NO_REFERENCED_ROW_2
|
||||||
|
INSERT INTO child VALUES (3,3);
|
||||||
|
|
||||||
|
SET SESSION foreign_key_checks = 0;
|
||||||
|
DELETE FROM parent;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SELECT COUNT(*) = 0 FROM parent;
|
||||||
|
|
||||||
|
DROP TABLE child;
|
||||||
|
DROP TABLE parent;
|
@ -0,0 +1,30 @@
|
|||||||
|
#
|
||||||
|
# Simple test for the operation on the wsrep-mysql-replication-bundle
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $wsrep_mysql_replication_bundle_orig = `SELECT @@wsrep_mysql_replication_bundle`
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
|
||||||
|
SET GLOBAL wsrep_mysql_replication_bundle = 2;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
# This statement will not be replicated immediately
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
INSERT INTO t1 VALUES (2);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--eval SET GLOBAL wsrep_mysql_replication_bundle = $wsrep_mysql_replication_bundle_orig
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@ -0,0 +1,21 @@
|
|||||||
|
#
|
||||||
|
# Simple test for wsrep-replicate-myisam = FALSE
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $wsrep_replicate_myisam_orig = `SELECT @@wsrep_replicate_myisam`
|
||||||
|
|
||||||
|
SET GLOBAL wsrep_replicate_myisam = FALSE;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--eval SET GLOBAL wsrep_replicate_myisam = $wsrep_replicate_myisam_orig
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@ -0,0 +1,21 @@
|
|||||||
|
#
|
||||||
|
# Simple test for wsrep-replicate-myisam = ON
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $wsrep_replicate_myisam_orig = `SELECT @@wsrep_replicate_myisam`
|
||||||
|
|
||||||
|
SET GLOBAL wsrep_replicate_myisam = TRUE;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--eval SET GLOBAL wsrep_replicate_myisam = $wsrep_replicate_myisam_orig
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
43
mysql-test/suite/galera/t/galera_var_sync_wait.test
Normal file
43
mysql-test/suite/galera/t/galera_var_sync_wait.test
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# Simple test for the various levels of wsrep-sync-wait
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $wsrep_sync_wait_orig = `SELECT @@wsrep_sync_wait`
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET GLOBAL wsrep_sync_wait = 1;
|
||||||
|
# Those statements should see the table
|
||||||
|
SHOW TABLES LIKE '%t1';
|
||||||
|
SELECT COUNT(*) = 0 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
CREATE TABLE t2 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET GLOBAL wsrep_sync_wait = 4;
|
||||||
|
# This insert should see the table and succeed
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
CREATE TABLE t3 (f1 INT PRIMARY KEY) Engine=InnoDB;
|
||||||
|
INSERT INTO t3 VALUES (1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET GLOBAL wsrep_sync_wait = 2;
|
||||||
|
# This statement should see and update 1 row
|
||||||
|
--enable_info
|
||||||
|
UPDATE t3 SET f1 = 2;
|
||||||
|
--disable_info
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--eval SET GLOBAL wsrep_sync_wait = $wsrep_sync_wait_orig
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
@ -197,11 +197,10 @@ c1 c2
|
|||||||
5 9
|
5 9
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -229,13 +228,13 @@ c1
|
|||||||
410
|
410
|
||||||
1000
|
1000
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL wsrep_auto_increment_control=OFF;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -271,11 +270,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -285,11 +283,10 @@ SELECT * FROM t1;
|
|||||||
c1
|
c1
|
||||||
-1
|
-1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL);
|
INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL);
|
||||||
INSERT INTO t1 VALUES (250),(NULL);
|
INSERT INTO t1 VALUES (250),(NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -319,11 +316,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -335,11 +331,10 @@ SELECT * FROM t1;
|
|||||||
c1
|
c1
|
||||||
1
|
1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (-2);
|
INSERT INTO t1 VALUES (-2);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c1' at row 1
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
@ -376,11 +371,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -392,11 +386,10 @@ SELECT * FROM t1;
|
|||||||
c1
|
c1
|
||||||
1
|
1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL);
|
INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c1' at row 1
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
@ -427,11 +420,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -443,11 +435,10 @@ c1
|
|||||||
1
|
1
|
||||||
9223372036854775794
|
9223372036854775794
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 2
|
auto_increment_increment 2
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
c1
|
c1
|
||||||
@ -462,11 +453,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -478,11 +468,10 @@ c1
|
|||||||
1
|
1
|
||||||
18446744073709551603
|
18446744073709551603
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 2
|
auto_increment_increment 2
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -492,11 +481,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -508,11 +496,10 @@ c1
|
|||||||
1
|
1
|
||||||
18446744073709551603
|
18446744073709551603
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 5
|
auto_increment_increment 5
|
||||||
auto_increment_offset 7
|
auto_increment_offset 7
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
||||||
ERROR HY000: Failed to read auto-increment value from storage engine
|
ERROR HY000: Failed to read auto-increment value from storage engine
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -522,11 +509,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -542,11 +528,10 @@ c1
|
|||||||
-9223372036854775806
|
-9223372036854775806
|
||||||
1
|
1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 3
|
auto_increment_increment 3
|
||||||
auto_increment_offset 3
|
auto_increment_offset 3
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
c1
|
c1
|
||||||
@ -560,11 +545,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 'test.t1'
|
Note 1051 Unknown table 'test.t1'
|
||||||
@ -579,11 +563,10 @@ SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCRE
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect auto_increment_increment value: '1152921504606846976'
|
Warning 1292 Truncated incorrect auto_increment_increment value: '1152921504606846976'
|
||||||
Warning 1292 Truncated incorrect auto_increment_offset value: '1152921504606846976'
|
Warning 1292 Truncated incorrect auto_increment_offset value: '1152921504606846976'
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 65535
|
auto_increment_increment 65535
|
||||||
auto_increment_offset 65535
|
auto_increment_offset 65535
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL);
|
||||||
ERROR 22003: Out of range value for column 'c1' at row 1
|
ERROR 22003: Out of range value for column 'c1' at row 1
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -593,11 +576,10 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES(NULL, 1);
|
INSERT INTO t1 VALUES(NULL, 1);
|
||||||
INSERT INTO t1 VALUES(NULL, 2);
|
INSERT INTO t1 VALUES(NULL, 2);
|
||||||
@ -881,11 +863,10 @@ ERROR 22003: Out of range value for column 'c1' at row 1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1, NULL);
|
INSERT INTO t1 VALUES (1, NULL);
|
||||||
INSERT INTO t1 VALUES (-1, 'innodb');
|
INSERT INTO t1 VALUES (-1, 'innodb');
|
||||||
@ -1272,11 +1253,10 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=InnoDB AUTO_INCREMENT=18446744073709551615 DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB AUTO_INCREMENT=18446744073709551615 DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=256;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=256;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 256
|
auto_increment_offset 256
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1, NULL);
|
INSERT INTO t1 VALUES (1, NULL);
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
@ -1291,11 +1271,10 @@ c1 c2
|
|||||||
1 NULL
|
1 NULL
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
wsrep_auto_increment_control ON
|
|
||||||
CREATE TABLE t1 (c1 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (2147483648, 'a');
|
INSERT INTO t1 VALUES (2147483648, 'a');
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
|
24
mysql-test/suite/innodb/t/galera.skip
Normal file
24
mysql-test/suite/innodb/t/galera.skip
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
innodb : deadlock, failure in UPDATE IGNORE, lp1372296
|
||||||
|
innodb_ctype_ldml : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb-autoinc : deadlock, failure in REPLACE, lp1372296
|
||||||
|
innodb_mysql : deadlock due to DDL
|
||||||
|
innodb_buffer_pool_load : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb-autoinc-56228 : deadlock, lp1372301
|
||||||
|
innodb_lock_wait_timeout_1 : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb-consistent : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb-semi-consistent : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb-index : DDL concurrent with transaction
|
||||||
|
innodb-lock : deadlock on INSERT IGNORE, lp1372296
|
||||||
|
innodb-status-output : Test performs server restart
|
||||||
|
innodb-wl5522 : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb-wl6445 : Test performs server restart
|
||||||
|
innodb_bug40360 : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb_bug40565 : Galera git bug #137 - Invalid deadlock on UPDATE to NULL without a PK
|
||||||
|
innodb_bug42419 : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb_bug49164 : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb_bug45357 : impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging
|
||||||
|
innodb_bug52663 : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb_bug59733 : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb_gis : Test contains statements unsafe to replicate in statement-based replication
|
||||||
|
innodb_prefix_index_restart_server : crash, lp1372288
|
||||||
|
innodb_stats_external_pages : Test contains statements unsafe to replicate in statement-based replication
|
@ -161,7 +161,7 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
# Test changes to AUTOINC next value calculation
|
# Test changes to AUTOINC next value calculation
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (NULL),(5),(NULL);
|
INSERT INTO t1 VALUES (NULL),(5),(NULL);
|
||||||
@ -176,9 +176,11 @@ DROP TABLE t1;
|
|||||||
# Test with SIGNED INT column, by inserting a 0 for the first column value
|
# Test with SIGNED INT column, by inserting a 0 for the first column value
|
||||||
# 0 is treated in the same was NULL.
|
# 0 is treated in the same was NULL.
|
||||||
# Reset the AUTOINC session variables
|
# Reset the AUTOINC session variables
|
||||||
|
SET GLOBAL wsrep_auto_increment_control=OFF;
|
||||||
|
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES(0);
|
INSERT INTO t1 VALUES(0);
|
||||||
@ -198,13 +200,13 @@ DROP TABLE t1;
|
|||||||
# Reset the AUTOINC session variables
|
# Reset the AUTOINC session variables
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES(-1);
|
INSERT INTO t1 VALUES(-1);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL);
|
INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL);
|
||||||
INSERT INTO t1 VALUES (250),(NULL);
|
INSERT INTO t1 VALUES (250),(NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -219,13 +221,13 @@ DROP TABLE t1;
|
|||||||
# Reset the AUTOINC session variables
|
# Reset the AUTOINC session variables
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES(-1);
|
INSERT INTO t1 VALUES(-1);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
INSERT INTO t1 VALUES (-2);
|
INSERT INTO t1 VALUES (-2);
|
||||||
INSERT INTO t1 VALUES (NULL);
|
INSERT INTO t1 VALUES (NULL);
|
||||||
INSERT INTO t1 VALUES (2);
|
INSERT INTO t1 VALUES (2);
|
||||||
@ -245,13 +247,13 @@ DROP TABLE t1;
|
|||||||
# Reset the AUTOINC session variables
|
# Reset the AUTOINC session variables
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES(-1);
|
INSERT INTO t1 VALUES(-1);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL);
|
INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL);
|
||||||
INSERT INTO t1 VALUES (250),(NULL);
|
INSERT INTO t1 VALUES (250),(NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -267,7 +269,7 @@ DROP TABLE t1;
|
|||||||
# Check for overflow handling when increment is > 1
|
# Check for overflow handling when increment is > 1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
# TODO: Fix the autoinc init code
|
# TODO: Fix the autoinc init code
|
||||||
@ -276,7 +278,7 @@ INSERT INTO t1 VALUES(NULL);
|
|||||||
INSERT INTO t1 VALUES (9223372036854775794); #-- 2^63 - 14
|
INSERT INTO t1 VALUES (9223372036854775794); #-- 2^63 - 14
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
# This should just fit
|
# This should just fit
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -286,7 +288,7 @@ DROP TABLE t1;
|
|||||||
# Check for overflow handling when increment and offser are > 1
|
# Check for overflow handling when increment and offser are > 1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
# TODO: Fix the autoinc init code
|
# TODO: Fix the autoinc init code
|
||||||
@ -295,7 +297,7 @@ INSERT INTO t1 VALUES(NULL);
|
|||||||
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
|
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
--error ER_AUTOINC_READ_FAILED
|
--error ER_AUTOINC_READ_FAILED
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -305,7 +307,7 @@ DROP TABLE t1;
|
|||||||
# Check for overflow handling when increment and offset are odd numbers
|
# Check for overflow handling when increment and offset are odd numbers
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
# TODO: Fix the autoinc init code
|
# TODO: Fix the autoinc init code
|
||||||
@ -314,7 +316,7 @@ INSERT INTO t1 VALUES(NULL);
|
|||||||
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
|
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
--error ER_AUTOINC_READ_FAILED
|
--error ER_AUTOINC_READ_FAILED
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -324,7 +326,7 @@ DROP TABLE t1;
|
|||||||
# and check for large -ve numbers
|
# and check for large -ve numbers
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
# TODO: Fix the autoinc init code
|
# TODO: Fix the autoinc init code
|
||||||
@ -335,7 +337,7 @@ INSERT INTO t1 VALUES(-9223372036854775807); #-- -2^63 + 1
|
|||||||
INSERT INTO t1 VALUES(-9223372036854775808); #-- -2^63
|
INSERT INTO t1 VALUES(-9223372036854775808); #-- -2^63
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -344,7 +346,7 @@ DROP TABLE t1;
|
|||||||
# large numbers 2^60
|
# large numbers 2^60
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
# TODO: Fix the autoinc init code
|
# TODO: Fix the autoinc init code
|
||||||
@ -353,7 +355,7 @@ INSERT INTO t1 VALUES(NULL);
|
|||||||
INSERT INTO t1 VALUES (18446744073709551610); #-- 2^64 - 2
|
INSERT INTO t1 VALUES (18446744073709551610); #-- 2^64 - 2
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
--error 167
|
--error 167
|
||||||
INSERT INTO t1 VALUES (NULL),(NULL);
|
INSERT INTO t1 VALUES (NULL),(NULL);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
@ -364,7 +366,7 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES(NULL, 1);
|
INSERT INTO t1 VALUES(NULL, 1);
|
||||||
INSERT INTO t1 VALUES(NULL, 2);
|
INSERT INTO t1 VALUES(NULL, 2);
|
||||||
@ -450,7 +452,7 @@ DROP TABLE t2;
|
|||||||
# If the user has specified negative values for an AUTOINC column then
|
# If the user has specified negative values for an AUTOINC column then
|
||||||
# InnoDB should ignore those values when setting the table's max value.
|
# InnoDB should ignore those values when setting the table's max value.
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
# TINYINT
|
# TINYINT
|
||||||
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1, NULL);
|
INSERT INTO t1 VALUES (1, NULL);
|
||||||
@ -646,7 +648,7 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
# Check if we handle offset > column max value properly
|
# Check if we handle offset > column max value properly
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=256;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=256;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
# TINYINT
|
# TINYINT
|
||||||
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 TINYINT PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1, NULL);
|
INSERT INTO t1 VALUES (1, NULL);
|
||||||
@ -658,7 +660,7 @@ DROP TABLE t1;
|
|||||||
# of the column. IMO, this should not be allowed and the assertion that fails
|
# of the column. IMO, this should not be allowed and the assertion that fails
|
||||||
# is actually an invariant.
|
# is actually an invariant.
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
# TINYINT
|
# TINYINT
|
||||||
CREATE TABLE t1 (c1 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
CREATE TABLE t1 (c1 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, c2 VARCHAR(10)) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (2147483648, 'a');
|
INSERT INTO t1 VALUES (2147483648, 'a');
|
||||||
|
@ -23,10 +23,9 @@ a b
|
|||||||
DROP PROCEDURE test_p1;
|
DROP PROCEDURE test_p1;
|
||||||
SET @save_autocommit= @@autocommit;
|
SET @save_autocommit= @@autocommit;
|
||||||
SET @@autocommit= OFF;
|
SET @@autocommit= OFF;
|
||||||
SHOW VARIABLES LIKE '%autocommit%';
|
SHOW VARIABLES LIKE 'autocommit%';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
autocommit OFF
|
autocommit OFF
|
||||||
wsrep_retry_autocommit 1
|
|
||||||
CREATE TRIGGER test_trg_1 BEFORE UPDATE ON tp FOR EACH ROW
|
CREATE TRIGGER test_trg_1 BEFORE UPDATE ON tp FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
|
||||||
|
@ -37,7 +37,7 @@ DROP PROCEDURE test_p1;
|
|||||||
|
|
||||||
SET @save_autocommit= @@autocommit;
|
SET @save_autocommit= @@autocommit;
|
||||||
SET @@autocommit= OFF;
|
SET @@autocommit= OFF;
|
||||||
SHOW VARIABLES LIKE '%autocommit%';
|
SHOW VARIABLES LIKE 'autocommit%';
|
||||||
DELIMITER |;
|
DELIMITER |;
|
||||||
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
--error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||||
CREATE TRIGGER test_trg_1 BEFORE UPDATE ON tp FOR EACH ROW
|
CREATE TRIGGER test_trg_1 BEFORE UPDATE ON tp FOR EACH ROW
|
||||||
|
@ -11,10 +11,9 @@ include/master-slave.inc
|
|||||||
|
|
||||||
*** Create test tables
|
*** Create test tables
|
||||||
|
|
||||||
show variables like '%binlog_format%';
|
show variables like 'binlog_format%';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
binlog_format MIXED
|
binlog_format MIXED
|
||||||
wsrep_forced_binlog_format NONE
|
|
||||||
drop table if exists test.marker;
|
drop table if exists test.marker;
|
||||||
select thread_id into @my_thread_id
|
select thread_id into @my_thread_id
|
||||||
from performance_schema.threads
|
from performance_schema.threads
|
||||||
@ -56,10 +55,9 @@ Expect 1
|
|||||||
*** MASTER ***
|
*** MASTER ***
|
||||||
**************
|
**************
|
||||||
|
|
||||||
show variables like '%binlog_format%';
|
show variables like 'binlog_format%';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
binlog_format MIXED
|
binlog_format MIXED
|
||||||
wsrep_forced_binlog_format NONE
|
|
||||||
*** Clear statement events
|
*** Clear statement events
|
||||||
|
|
||||||
*** Create/drop table, create/drop database
|
*** Create/drop table, create/drop database
|
||||||
|
@ -64,7 +64,7 @@ connection master;
|
|||||||
--echo *** Create test tables
|
--echo *** Create test tables
|
||||||
--echo
|
--echo
|
||||||
|
|
||||||
show variables like '%binlog_format%';
|
show variables like 'binlog_format%';
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists test.marker;
|
drop table if exists test.marker;
|
||||||
@ -129,7 +129,7 @@ connection master;
|
|||||||
--echo *** MASTER ***
|
--echo *** MASTER ***
|
||||||
--echo **************
|
--echo **************
|
||||||
--echo
|
--echo
|
||||||
show variables like '%binlog_format%';
|
show variables like 'binlog_format%';
|
||||||
|
|
||||||
--echo *** Clear statement events
|
--echo *** Clear statement events
|
||||||
--source ../include/rpl_statements_truncate.inc
|
--source ../include/rpl_statements_truncate.inc
|
||||||
|
@ -9630,6 +9630,31 @@ static int get_options(int *argc_ptr, char ***argv_ptr)
|
|||||||
else
|
else
|
||||||
global_system_variables.option_bits&= ~OPTION_BIG_SELECTS;
|
global_system_variables.option_bits&= ~OPTION_BIG_SELECTS;
|
||||||
|
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
if (global_system_variables.wsrep_causal_reads) {
|
||||||
|
WSREP_WARN("option --wsrep-casual-reads is deprecated");
|
||||||
|
if (!(global_system_variables.wsrep_sync_wait &
|
||||||
|
WSREP_SYNC_WAIT_BEFORE_READ)) {
|
||||||
|
WSREP_WARN("--wsrep-casual-reads=ON takes precedence over --wsrep-sync-wait=%u. "
|
||||||
|
"WSREP_SYNC_WAIT_BEFORE_READ is on",
|
||||||
|
global_system_variables.wsrep_sync_wait);
|
||||||
|
global_system_variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
|
||||||
|
} else {
|
||||||
|
// they are both turned on.
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (global_system_variables.wsrep_sync_wait &
|
||||||
|
WSREP_SYNC_WAIT_BEFORE_READ) {
|
||||||
|
WSREP_WARN("--wsrep-sync-wait=%u takes precedence over --wsrep-causal-reads=OFF. "
|
||||||
|
"WSREP_SYNC_WAIT_BEFORE_READ is on",
|
||||||
|
global_system_variables.wsrep_sync_wait);
|
||||||
|
global_system_variables.wsrep_causal_reads = 1;
|
||||||
|
} else {
|
||||||
|
// they are both turned off.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // WITH_WSREP
|
||||||
|
|
||||||
// Synchronize @@global.autocommit on --autocommit
|
// Synchronize @@global.autocommit on --autocommit
|
||||||
const ulonglong turn_bit_on= opt_autocommit ?
|
const ulonglong turn_bit_on= opt_autocommit ?
|
||||||
OPTION_AUTOCOMMIT : OPTION_NOT_AUTOCOMMIT;
|
OPTION_AUTOCOMMIT : OPTION_NOT_AUTOCOMMIT;
|
||||||
|
@ -308,16 +308,12 @@ bool Sql_cmd_alter_table::execute(THD *thd)
|
|||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
TABLE *find_temporary_table(THD *thd, const TABLE_LIST *tl);
|
TABLE *find_temporary_table(THD *thd, const TABLE_LIST *tl);
|
||||||
|
|
||||||
if (WSREP(thd) &&
|
if ((!thd->is_current_stmt_binlog_format_row() ||
|
||||||
(!thd->is_current_stmt_binlog_format_row() ||
|
!find_temporary_table(thd, first_table)))
|
||||||
!find_temporary_table(thd, first_table)) &&
|
|
||||||
wsrep_to_isolation_begin(thd,
|
|
||||||
lex->name.str ? select_lex->db : NULL,
|
|
||||||
lex->name.str ? lex->name.str : NULL,
|
|
||||||
first_table))
|
|
||||||
{
|
{
|
||||||
WSREP_WARN("ALTER TABLE isolation failure");
|
WSREP_TO_ISOLATION_BEGIN(((lex->name.str) ? select_lex->db : NULL),
|
||||||
DBUG_RETURN(TRUE);
|
((lex->name.str) ? lex->name.str : NULL),
|
||||||
|
first_table);
|
||||||
}
|
}
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
result= mysql_alter_table(thd, select_lex->db, lex->name.str,
|
result= mysql_alter_table(thd, select_lex->db, lex->name.str,
|
||||||
@ -328,9 +324,13 @@ bool Sql_cmd_alter_table::execute(THD *thd)
|
|||||||
select_lex->order_list.first,
|
select_lex->order_list.first,
|
||||||
lex->ignore);
|
lex->ignore);
|
||||||
|
|
||||||
#ifdef WITH_WSREP
|
|
||||||
#endif /* WITH_WSREP */
|
|
||||||
DBUG_RETURN(result);
|
DBUG_RETURN(result);
|
||||||
|
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
error:
|
||||||
|
WSREP_WARN("ALTER TABLE isolation failure");
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
#endif /* WITH_WSREP */
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Sql_cmd_discard_import_tablespace::execute(THD *thd)
|
bool Sql_cmd_discard_import_tablespace::execute(THD *thd)
|
||||||
|
@ -975,12 +975,8 @@ bool do_command(THD *thd)
|
|||||||
thd->wsrep_query_state= QUERY_EXEC;
|
thd->wsrep_query_state= QUERY_EXEC;
|
||||||
mysql_mutex_unlock(&thd->LOCK_wsrep_thd);
|
mysql_mutex_unlock(&thd->LOCK_wsrep_thd);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((WSREP(thd) && packet_length == packet_error) ||
|
|
||||||
(!WSREP(thd) && (packet_length == packet_error)))
|
|
||||||
#else
|
|
||||||
if (packet_length == packet_error)
|
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
|
if (packet_length == packet_error)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info",("Got error %d reading command from socket %s",
|
DBUG_PRINT("info",("Got error %d reading command from socket %s",
|
||||||
net->error,
|
net->error,
|
||||||
|
@ -95,7 +95,8 @@ static wsrep_cb_status_t wsrep_apply_events(THD* thd,
|
|||||||
|
|
||||||
DBUG_ENTER("wsrep_apply_events");
|
DBUG_ENTER("wsrep_apply_events");
|
||||||
|
|
||||||
if (thd->killed == KILL_CONNECTION)
|
if (thd->killed == KILL_CONNECTION &&
|
||||||
|
thd->wsrep_conflict_state != REPLAYING)
|
||||||
{
|
{
|
||||||
WSREP_INFO("applier has been aborted, skipping apply_rbr: %lld",
|
WSREP_INFO("applier has been aborted, skipping apply_rbr: %lld",
|
||||||
(long long) wsrep_thd_trx_seqno(thd));
|
(long long) wsrep_thd_trx_seqno(thd));
|
||||||
|
@ -307,9 +307,16 @@ wsrep_view_handler_cb (void* app_ctx,
|
|||||||
wsrep_ready_set(FALSE);
|
wsrep_ready_set(FALSE);
|
||||||
|
|
||||||
/* Close client connections to ensure that they don't interfere
|
/* Close client connections to ensure that they don't interfere
|
||||||
* with SST */
|
* with SST. Necessary only if storage engines are initialized
|
||||||
WSREP_DEBUG("[debug]: closing client connections for PRIM");
|
* before SST.
|
||||||
wsrep_close_client_connections(TRUE);
|
* TODO: Just killing all ongoing transactions should be enough
|
||||||
|
* since wsrep_ready is OFF and no new transactions can start.
|
||||||
|
*/
|
||||||
|
if (!wsrep_before_SE())
|
||||||
|
{
|
||||||
|
WSREP_DEBUG("[debug]: closing client connections for PRIM");
|
||||||
|
wsrep_close_client_connections(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
ssize_t const req_len= wsrep_sst_prepare (sst_req);
|
ssize_t const req_len= wsrep_sst_prepare (sst_req);
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ extern wsrep_seqno_t wsrep_locked_seqno;
|
|||||||
(global_system_variables.wsrep_on)
|
(global_system_variables.wsrep_on)
|
||||||
|
|
||||||
#define WSREP(thd) \
|
#define WSREP(thd) \
|
||||||
(WSREP_ON && (thd && thd->variables.wsrep_on))
|
(WSREP_ON && wsrep && (thd && thd->variables.wsrep_on))
|
||||||
|
|
||||||
#define WSREP_CLIENT(thd) \
|
#define WSREP_CLIENT(thd) \
|
||||||
(WSREP(thd) && thd->wsrep_client_thread)
|
(WSREP(thd) && thd->wsrep_client_thread)
|
||||||
|
@ -62,26 +62,34 @@ bool wsrep_on_update (sys_var *self, THD* thd, enum_var_type var_type)
|
|||||||
|
|
||||||
bool wsrep_causal_reads_update (sys_var *self, THD* thd, enum_var_type var_type)
|
bool wsrep_causal_reads_update (sys_var *self, THD* thd, enum_var_type var_type)
|
||||||
{
|
{
|
||||||
// global setting should not affect session setting.
|
// wsrep_sync_wait should also be updated.
|
||||||
// if (var_type == OPT_GLOBAL) {
|
if (var_type == OPT_GLOBAL) {
|
||||||
// thd->variables.wsrep_causal_reads = global_system_variables.wsrep_causal_reads;
|
if (global_system_variables.wsrep_causal_reads) {
|
||||||
// }
|
global_system_variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
|
||||||
if (thd->variables.wsrep_causal_reads) {
|
} else {
|
||||||
thd->variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
|
global_system_variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
thd->variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
|
if (thd->variables.wsrep_causal_reads) {
|
||||||
|
thd->variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
|
||||||
|
} else {
|
||||||
|
thd->variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wsrep_sync_wait_update (sys_var* self, THD* thd, enum_var_type var_type)
|
bool wsrep_sync_wait_update (sys_var* self, THD* thd, enum_var_type var_type)
|
||||||
{
|
{
|
||||||
// global setting should not affect session setting.
|
// wsrep_causal_reads should also be updated.
|
||||||
// if (var_type == OPT_GLOBAL) {
|
if (var_type == OPT_GLOBAL) {
|
||||||
// thd->variables.wsrep_sync_wait = global_system_variables.wsrep_sync_wait;
|
global_system_variables.wsrep_causal_reads=
|
||||||
// }
|
global_system_variables.wsrep_sync_wait & WSREP_SYNC_WAIT_BEFORE_READ;
|
||||||
thd->variables.wsrep_causal_reads = thd->variables.wsrep_sync_wait &
|
} else {
|
||||||
WSREP_SYNC_WAIT_BEFORE_READ;
|
thd->variables.wsrep_causal_reads=
|
||||||
|
thd->variables.wsrep_sync_wait & WSREP_SYNC_WAIT_BEFORE_READ;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user