Merge 10.5 into 10.6
This commit is contained in:
commit
e55397a46d
@ -1164,7 +1164,10 @@ static int dbConnect(char *host, char *user, char *passwd)
|
||||
opt_ssl_capath, opt_ssl_cipher);
|
||||
mysql_options(&mysql_connection, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
|
||||
mysql_options(&mysql_connection, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
|
||||
mysql_options(&mysql_connection, MARIADB_OPT_TLS_VERSION, opt_tls_version);
|
||||
}
|
||||
mysql_options(&mysql_connection, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||
(char*)&opt_ssl_verify_server_cert);
|
||||
#endif
|
||||
if (opt_protocol)
|
||||
mysql_options(&mysql_connection,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
|
||||
|
@ -304,7 +304,10 @@ void set_mysql_connect_options(MYSQL *mysql)
|
||||
opt_ssl_capath, opt_ssl_cipher);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
|
||||
mysql_options(mysql, MARIADB_OPT_TLS_VERSION, opt_tls_version);
|
||||
}
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||
(char*)&opt_ssl_verify_server_cert);
|
||||
#endif
|
||||
if (opt_protocol)
|
||||
mysql_options(mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
|
||||
|
@ -9824,6 +9824,7 @@ int main(int argc, char **argv)
|
||||
opt_ssl_capath, opt_ssl_cipher);
|
||||
mysql_options(con->mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
|
||||
mysql_options(con->mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
|
||||
mysql_options(con->mysql, MARIADB_OPT_TLS_VERSION, opt_tls_version);
|
||||
#if MYSQL_VERSION_ID >= 50000
|
||||
/* Turn on ssl_verify_server_cert only if host is "localhost" */
|
||||
opt_ssl_verify_server_cert= opt_host && !strcmp(opt_host, "localhost");
|
||||
|
@ -3880,6 +3880,21 @@ func_exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
/** Close all undo tablespaces while applying incremental delta */
|
||||
static void xb_close_undo_tablespaces()
|
||||
{
|
||||
if (srv_undo_space_id_start == 0)
|
||||
return;
|
||||
for (ulint space_id= srv_undo_space_id_start;
|
||||
space_id < srv_undo_space_id_start + srv_undo_tablespaces_open;
|
||||
space_id++)
|
||||
{
|
||||
fil_space_t *space= fil_space_get(space_id);
|
||||
ut_ad(space);
|
||||
space->close();
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
Populates the tablespace memory cache by scanning for and opening data files.
|
||||
@returns DB_SUCCESS or error code.*/
|
||||
@ -3943,6 +3958,10 @@ xb_load_tablespaces()
|
||||
return(err);
|
||||
}
|
||||
|
||||
if (srv_operation == SRV_OPERATION_RESTORE_DELTA) {
|
||||
xb_close_undo_tablespaces();
|
||||
}
|
||||
|
||||
DBUG_MARIABACKUP_EVENT("after_load_tablespaces", {});
|
||||
return(DB_SUCCESS);
|
||||
}
|
||||
|
@ -39,10 +39,10 @@
|
||||
{"ssl-key", OPT_SSL_KEY, "X509 key in PEM format (implies --ssl).",
|
||||
&opt_ssl_key, &opt_ssl_key, 0, GET_STR, REQUIRED_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"ssl-crl", OPT_SSL_KEY, "Certificate revocation list (implies --ssl).",
|
||||
{"ssl-crl", OPT_SSL_CRL, "Certificate revocation list (implies --ssl).",
|
||||
&opt_ssl_crl, &opt_ssl_crl, 0, GET_STR, REQUIRED_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"ssl-crlpath", OPT_SSL_KEY,
|
||||
{"ssl-crlpath", OPT_SSL_CRLPATH,
|
||||
"Certificate revocation list path (implies --ssl).",
|
||||
&opt_ssl_crlpath, &opt_ssl_crlpath, 0, GET_STR, REQUIRED_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
|
@ -4432,3 +4432,28 @@ HEX(WEIGHT_STRING(_tis620 'a\0b' COLLATE tis620_thai_nopad_ci))
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
#
|
||||
CREATE OR REPLACE TABLE t1
|
||||
(
|
||||
a VARCHAR(250) COLLATE tis620_thai_nopad_ci,
|
||||
UNIQUE KEY(a(100)) USING HASH
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
ERROR 23000: Duplicate entry 'A' for key 'a'
|
||||
DROP TABLE t1;
|
||||
CREATE OR REPLACE TABLE t1
|
||||
(
|
||||
a CHAR(250) COLLATE tis620_thai_nopad_ci,
|
||||
UNIQUE KEY(a(100)) USING HASH
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
ERROR 23000: Duplicate entry 'A' for key 'a'
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
@ -223,3 +223,34 @@ SELECT HEX(WEIGHT_STRING(_tis620 'a\0b' COLLATE tis620_thai_nopad_ci));
|
||||
--echo #
|
||||
--echo # End of 10.2 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
--echo #
|
||||
|
||||
CREATE OR REPLACE TABLE t1
|
||||
(
|
||||
a VARCHAR(250) COLLATE tis620_thai_nopad_ci,
|
||||
UNIQUE KEY(a(100)) USING HASH
|
||||
) ENGINE=MyISAM;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE OR REPLACE TABLE t1
|
||||
|
||||
(
|
||||
a CHAR(250) COLLATE tis620_thai_nopad_ci,
|
||||
UNIQUE KEY(a(100)) USING HASH
|
||||
) ENGINE=MyISAM;
|
||||
--error ER_DUP_ENTRY
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
17
mysql-test/suite/galera/r/MDEV-25389.result
Normal file
17
mysql-test/suite/galera/r/MDEV-25389.result
Normal file
@ -0,0 +1,17 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
connection node_2;
|
||||
call mtr.add_suppression("WSREP: Failed to create/initialize system thread");
|
||||
SET GLOBAL debug_dbug='+d,wsrep_simulate_failed_connection_1';
|
||||
SET GLOBAL wsrep_slave_threads=2;
|
||||
ERROR HY000: Incorrect arguments to SET
|
||||
SELECT @@wsrep_slave_threads;
|
||||
@@wsrep_slave_threads
|
||||
1
|
||||
SET GLOBAL debug_dbug='';
|
||||
SET GLOBAL wsrep_slave_threads=1;
|
||||
SELECT @@wsrep_slave_threads;
|
||||
@@wsrep_slave_threads
|
||||
1
|
40
mysql-test/suite/galera/r/MDEV-29512.result
Normal file
40
mysql-test/suite/galera/r/MDEV-29512.result
Normal file
@ -0,0 +1,40 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 int, f3 varchar(2000));
|
||||
INSERT INTO t1 VALUES (1, 0, REPEAT('1234567890', 200));
|
||||
INSERT INTO t1 VALUES (3, 3, REPEAT('1234567890', 200));
|
||||
SET SESSION wsrep_sync_wait=0;
|
||||
SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
|
||||
connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||
connection node_1a;
|
||||
SET SESSION wsrep_sync_wait=0;
|
||||
connection node_1;
|
||||
begin;
|
||||
select f1,f2 from t1;
|
||||
f1 f2
|
||||
1 0
|
||||
3 3
|
||||
connection node_2;
|
||||
UPDATE t1 SET f2=2 WHERE f1=3;
|
||||
connection node_1a;
|
||||
SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
|
||||
connection node_1;
|
||||
UPDATE t1 SET f2=1 WHERE f1=3;
|
||||
SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync';
|
||||
COMMIT;
|
||||
connection node_1a;
|
||||
SET SESSION wsrep_on = 0;
|
||||
SET SESSION wsrep_on = 1;
|
||||
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||
SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync';
|
||||
SET GLOBAL DEBUG_DBUG = "";
|
||||
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
|
||||
SET GLOBAL debug_dbug = NULL;
|
||||
SET debug_sync='RESET';
|
||||
connection node_1;
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
select f1,f2 from t1;
|
||||
f1 f2
|
||||
1 0
|
||||
3 2
|
||||
DROP TABLE t1;
|
@ -19,9 +19,9 @@ SHOW STATUS LIKE 'wsrep_cluster_status';
|
||||
Variable_name Value
|
||||
wsrep_cluster_status Disconnected
|
||||
SELECT * FROM t1;
|
||||
Got one of the listed errors
|
||||
ERROR 08S01: WSREP has not yet prepared node for application use
|
||||
SELECT 1 FROM t1;
|
||||
Got one of the listed errors
|
||||
ERROR 08S01: WSREP has not yet prepared node for application use
|
||||
SET @@session.wsrep_dirty_reads=ON;
|
||||
SELECT * FROM t1;
|
||||
i
|
||||
@ -34,7 +34,7 @@ i variable_name variable_value
|
||||
1 WSREP_DIRTY_READS ON
|
||||
SET @@session.wsrep_dirty_reads=OFF;
|
||||
SELECT i, variable_name, variable_value FROM t1, information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads" AND i = 1;
|
||||
Got one of the listed errors
|
||||
ERROR 08S01: WSREP has not yet prepared node for application use
|
||||
SELECT 1;
|
||||
1
|
||||
1
|
||||
|
24
mysql-test/suite/galera/t/MDEV-25389.test
Normal file
24
mysql-test/suite/galera/t/MDEV-25389.test
Normal file
@ -0,0 +1,24 @@
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
--let $node_1=node_1
|
||||
--let $node_2=node_2
|
||||
--source ../galera/include/auto_increment_offset_save.inc
|
||||
|
||||
--connection node_2
|
||||
call mtr.add_suppression("WSREP: Failed to create/initialize system thread");
|
||||
SET GLOBAL debug_dbug='+d,wsrep_simulate_failed_connection_1';
|
||||
--error ER_WRONG_ARGUMENTS
|
||||
SET GLOBAL wsrep_slave_threads=2;
|
||||
SELECT @@wsrep_slave_threads;
|
||||
SET GLOBAL debug_dbug='';
|
||||
SET GLOBAL wsrep_slave_threads=1;
|
||||
SELECT @@wsrep_slave_threads;
|
||||
|
||||
# MDEV-29878: this test caused a subsequent test to fail
|
||||
# during shutdown. Do a restart here, to make sure the
|
||||
# issue is fixed.
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--source ../galera/include/auto_increment_offset_restore.inc
|
15
mysql-test/suite/galera/t/MDEV-29512.cnf
Normal file
15
mysql-test/suite/galera/t/MDEV-29512.cnf
Normal file
@ -0,0 +1,15 @@
|
||||
!include ../galera_2nodes.cnf
|
||||
|
||||
[mysqld]
|
||||
log-bin
|
||||
log-slave-updates
|
||||
|
||||
[mysqld.1]
|
||||
log_bin
|
||||
log_slave_updates
|
||||
max-binlog-size=4096
|
||||
expire-logs-days=1
|
||||
|
||||
|
||||
[mysqld.2]
|
||||
|
91
mysql-test/suite/galera/t/MDEV-29512.test
Normal file
91
mysql-test/suite/galera/t/MDEV-29512.test
Normal file
@ -0,0 +1,91 @@
|
||||
#
|
||||
# This test is for reproducing the issue in:
|
||||
# https://jira.mariadb.org/browse/MDEV-29512
|
||||
#
|
||||
# The hanging in MDEV-29512 happens when binlog purging is attempted, and there is
|
||||
# one local BF aborted transaction waiting for commit monitor.
|
||||
#
|
||||
# The test will launch two node cluster and enable binlogging with expire log days,
|
||||
# to force binlog purging to happen.
|
||||
# A local transaction is executed so that will become BF abort victim, and has advanced
|
||||
# to replication stage waiting for commit monitor for final cleanup (to mark position in innodb)
|
||||
# after that, applier is released to complete the BF abort and due to binlog configuration,
|
||||
# starting the binlog purging. This is where the hanging would occur, if code is buggy
|
||||
#
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug_sync.inc
|
||||
--source include/galera_have_debug_sync.inc
|
||||
|
||||
#
|
||||
# binlog size is limited to 4096 bytes, we will create enough events to
|
||||
# cause binlog rotation
|
||||
#
|
||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 int, f3 varchar(2000));
|
||||
INSERT INTO t1 VALUES (1, 0, REPEAT('1234567890', 200));
|
||||
INSERT INTO t1 VALUES (3, 3, REPEAT('1234567890', 200));
|
||||
|
||||
SET SESSION wsrep_sync_wait=0;
|
||||
|
||||
# set sync point for replication applier
|
||||
SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
|
||||
|
||||
# Control connection to manage sync points for appliers
|
||||
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||
--connection node_1a
|
||||
SET SESSION wsrep_sync_wait=0;
|
||||
|
||||
# starting local transaction, only select so far,
|
||||
# write will happen later and this will be ordered after the transaction in node_2
|
||||
--connection node_1
|
||||
begin;
|
||||
select f1,f2 from t1;
|
||||
|
||||
# send from node 2 an UPDATE transaction, which will BF abort the transaction in node_1
|
||||
--connection node_2
|
||||
--let $wait_condition=select count(*)=2 from t1
|
||||
--source include/wait_condition.inc
|
||||
|
||||
UPDATE t1 SET f2=2 WHERE f1=3;
|
||||
|
||||
--connection node_1a
|
||||
# wait to see the UPDATE from node_2 in apply_cb sync point
|
||||
SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
|
||||
|
||||
--connection node_1
|
||||
# now issuing conflicting update
|
||||
UPDATE t1 SET f2=1 WHERE f1=3;
|
||||
|
||||
# Block the local commit, send final COMMIT and wait until it gets blocked
|
||||
--let $galera_sync_point = commit_monitor_master_enter_sync
|
||||
--source include/galera_set_sync_point.inc
|
||||
--send COMMIT
|
||||
|
||||
--connection node_1a
|
||||
# wait for the local commit to enter in commit monitor wait state
|
||||
--let $galera_sync_point = commit_monitor_master_enter_sync
|
||||
--source include/galera_wait_sync_point.inc
|
||||
--source include/galera_clear_sync_point.inc
|
||||
|
||||
# release the local transaction to continue with commit
|
||||
--let $galera_sync_point = commit_monitor_master_enter_sync
|
||||
--source include/galera_signal_sync_point.inc
|
||||
|
||||
# and now release the applier, it should force local trx to abort
|
||||
SET GLOBAL DEBUG_DBUG = "";
|
||||
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
|
||||
SET GLOBAL debug_dbug = NULL;
|
||||
SET debug_sync='RESET';
|
||||
|
||||
--connection node_1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
|
||||
# wait until applying is complete
|
||||
--let $wait_condition = SELECT COUNT(*)=1 FROM t1 WHERE f2=2
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# final read to verify what we got
|
||||
select f1,f2 from t1;
|
||||
|
||||
DROP TABLE t1;
|
@ -31,10 +31,10 @@ SHOW STATUS LIKE 'wsrep_ready';
|
||||
# Must return 'Disconnected'
|
||||
SHOW STATUS LIKE 'wsrep_cluster_status';
|
||||
|
||||
--error ER_UNKNOWN_COM_ERROR,1047
|
||||
--error ER_UNKNOWN_COM_ERROR
|
||||
SELECT * FROM t1;
|
||||
|
||||
--error ER_UNKNOWN_COM_ERROR,1047
|
||||
--error ER_UNKNOWN_COM_ERROR
|
||||
SELECT 1 FROM t1;
|
||||
|
||||
SET @@session.wsrep_dirty_reads=ON;
|
||||
@ -46,7 +46,7 @@ SELECT i, variable_name, variable_value FROM t1, information_schema.session_vari
|
||||
|
||||
SET @@session.wsrep_dirty_reads=OFF;
|
||||
|
||||
--error ER_UNKNOWN_COM_ERROR,1047
|
||||
--error ER_UNKNOWN_COM_ERROR
|
||||
SELECT i, variable_name, variable_value FROM t1, information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads" AND i = 1;
|
||||
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
GCF-336 :
|
||||
GCF-582 :
|
||||
GCF-810A :
|
||||
GCF-810B :
|
||||
|
@ -1,11 +1,17 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
||||
SET SESSION wsrep_trx_fragment_size = 1;
|
||||
SET AUTOCOMMIT=OFF;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
||||
connection node_2a;
|
||||
SELECT COUNT(*) > 0 FROM mysql.wsrep_streaming_log;
|
||||
COUNT(*) > 0
|
||||
1
|
||||
connection node_1;
|
||||
SELECT COUNT(*) > 0 FROM mysql.wsrep_streaming_log;
|
||||
COUNT(*) > 0
|
||||
1
|
||||
@ -13,14 +19,19 @@ SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||
SELECT COUNT(*) > 0 FROM t1;
|
||||
COUNT(*) > 0
|
||||
1
|
||||
connection node_2a;
|
||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
|
||||
SET SESSION wsrep_sync_wait=0;
|
||||
connection node_2;
|
||||
INSERT INTO t1 VALUES (2);
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
COMMIT;
|
||||
ERROR 08S01: WSREP has not yet prepared node for application use
|
||||
connection node_2a;
|
||||
SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
|
||||
DROP TABLE t1;
|
||||
CALL mtr.add_suppression("replication aborted");
|
||||
CALL mtr.add_suppression("WSREP: fragment replication failed: 3");
|
||||
CALL mtr.add_suppression("WSREP: failed to send SR rollback for ");
|
||||
connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3;
|
||||
connection node_3;
|
||||
|
@ -26,3 +26,69 @@ DROP TABLE t1;
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
#
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, a CHAR(8), KEY(a)) ENGINE=InnoDB COLLATE tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
#
|
||||
CREATE TABLE t1 (a INT KEY,b INT,c CHAR,KEY(b),KEY(c)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (3,4,4);
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (C1 CHAR KEY,B1 BIT,B2 BIT,C2 CHAR DEFAULT'') ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
SELECT HEX(c1),HEX (c2) FROM t1 WHERE c1>=''AND c1<''AND c2=''LIMIT 2;
|
||||
HEX(c1) HEX (c2)
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT UNSIGNED,b INT,c CHAR(1),d BINARY (1),e VARCHAR(1),f VARBINARY(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (4386060749083099108,157,0,0,0,0,0,0,12);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
INSERT INTO t1 VALUES (104,15158706241929488558,0,0,0,0,0,0,13);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'b' at row 1
|
||||
SELECT GROUP_CONCAT(DISTINCT a,b ORDER BY c,b) FROM t1;
|
||||
GROUP_CONCAT(DISTINCT a,b ORDER BY c,b)
|
||||
4294967295157,1042147483647
|
||||
DROP TABLE t1;
|
||||
SET sql_mode=DEFAULT;
|
||||
CREATE TABLE t1 (a CHAR(9),b CHAR(7)) COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0);
|
||||
ALTER TABLE t1 ADD INDEX kb (b),ADD INDEX kab (a,b),ALGORITHM=INPLACE;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT UNSIGNED,b INT UNSIGNED,c CHAR(1),d CHAR(1),e VARCHAR(1),f VARCHAR(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (15842995496588415350,5339224446865937973,0,0,0,0,0,0,4);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
Warning 1264 Out of range value for column 'b' at row 1
|
||||
INSERT INTO t1 VALUES (8118894032862615316,5299008984764990929,0,0,0,0,0,0,1);
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
Warning 1264 Out of range value for column 'b' at row 1
|
||||
SELECT GROUP_CONCAT(DISTINCT a,c ORDER BY a) FROM t1;
|
||||
GROUP_CONCAT(DISTINCT a,c ORDER BY a)
|
||||
42949672950
|
||||
DROP TABLE t1;
|
||||
SET sql_mode=DEFAULT;
|
||||
CREATE TABLE t1 (a CHAR,b CHAR,KEY(a,b)) ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a CHAR,b CHAR) COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
SELECT a,SUM(DISTINCT a),MIN(b) FROM t1 GROUP BY a;
|
||||
a SUM(DISTINCT a) MIN(b)
|
||||
0 0 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a CHAR,KEY(a)) ENGINE=InnoDB COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (0);
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
@ -27,3 +27,65 @@ DROP TABLE t1;
|
||||
--echo #
|
||||
--echo # End of 10.2 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-27670 Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, a CHAR(8), KEY(a)) ENGINE=InnoDB COLLATE tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT KEY,b INT,c CHAR,KEY(b),KEY(c)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (3,4,4);
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (C1 CHAR KEY,B1 BIT,B2 BIT,C2 CHAR DEFAULT'') ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
SELECT HEX(c1),HEX (c2) FROM t1 WHERE c1>=''AND c1<''AND c2=''LIMIT 2;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT UNSIGNED,b INT,c CHAR(1),d BINARY (1),e VARCHAR(1),f VARBINARY(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (4386060749083099108,157,0,0,0,0,0,0,12);
|
||||
INSERT INTO t1 VALUES (104,15158706241929488558,0,0,0,0,0,0,13);
|
||||
SELECT GROUP_CONCAT(DISTINCT a,b ORDER BY c,b) FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode=DEFAULT;
|
||||
|
||||
CREATE TABLE t1 (a CHAR(9),b CHAR(7)) COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0);
|
||||
ALTER TABLE t1 ADD INDEX kb (b),ADD INDEX kab (a,b),ALGORITHM=INPLACE;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (a INT UNSIGNED,b INT UNSIGNED,c CHAR(1),d CHAR(1),e VARCHAR(1),f VARCHAR(1),g BLOB,h BLOB,id INT,KEY(b),KEY(e)) ROW_FORMAT=REDUNDANT COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (15842995496588415350,5339224446865937973,0,0,0,0,0,0,4);
|
||||
INSERT INTO t1 VALUES (8118894032862615316,5299008984764990929,0,0,0,0,0,0,1);
|
||||
SELECT GROUP_CONCAT(DISTINCT a,c ORDER BY a) FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET sql_mode=DEFAULT;
|
||||
|
||||
CREATE TABLE t1 (a CHAR,b CHAR,KEY(a,b)) ROW_FORMAT=DYNAMIC COLLATE=tis620_thai_nopad_ci ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a CHAR,b CHAR) COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (0,0);
|
||||
SELECT a,SUM(DISTINCT a),MIN(b) FROM t1 GROUP BY a;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a CHAR,KEY(a)) ENGINE=InnoDB COLLATE=tis620_thai_nopad_ci;
|
||||
INSERT INTO t1 VALUES (0);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: New log files created");
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
--source include/have_aria.inc
|
||||
--source include/innodb_page_size.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
# see suite.pm "check for exact values, in case the default changes to be small everywhere"
|
||||
if (`select @@max_binlog_stmt_cache_size = 4294963200 and @@innodb_page_size = 65536`) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_partition.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
let $basedir=$MYSQLTEST_VARDIR/tmp/backup;
|
||||
let $incremental_dir=$MYSQLTEST_VARDIR/tmp/backup_inc1;
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/have_debug.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: New log files created");
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/have_debug.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: New log files created");
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/innodb_page_size.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
if (!$EXAMPLE_KEY_MANAGEMENT_SO)
|
||||
{
|
||||
|
@ -1,5 +1,6 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: New log files created");
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
--source include/have_debug.inc
|
||||
--source include/no_valgrind_without_big.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
--echo ########
|
||||
--echo # Test for generating "innodb_corrupted_pages" file during full and
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
call mtr.add_suppression("InnoDB: New log files created");
|
||||
call mtr.add_suppression("InnoDB: Operating system error number .* in a file operation");
|
||||
call mtr.add_suppression("InnoDB: The error means the system cannot find the path specified");
|
||||
|
@ -1,5 +1,6 @@
|
||||
#--source include/innodb_page_size.inc
|
||||
--source include/have_partition.inc
|
||||
--source include/innodb_undo_tablespaces.inc
|
||||
|
||||
CREATE TABLE t1(a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
|
47
mysql-test/suite/parts/r/part_ctype_tis620.result
Normal file
47
mysql-test/suite/parts/r/part_ctype_tis620.result
Normal file
@ -0,0 +1,47 @@
|
||||
#
|
||||
# MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a CHAR
|
||||
) COLLATE=tis620_thai_nopad_ci
|
||||
PARTITION BY RANGE COLUMNS (a)
|
||||
(
|
||||
PARTITION p0 VALUES LESS THAN (''),
|
||||
PARTITION p VALUES LESS THAN ('')
|
||||
);
|
||||
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
|
||||
CREATE TABLE t1 (
|
||||
a CHAR
|
||||
) COLLATE=tis620_thai_nopad_ci
|
||||
PARTITION BY RANGE COLUMNS (a)
|
||||
(
|
||||
PARTITION p0 VALUES LESS THAN (''),
|
||||
PARTITION p VALUES LESS THAN (' ')
|
||||
);
|
||||
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
|
||||
CREATE TABLE t1 (
|
||||
a CHAR
|
||||
) COLLATE=tis620_thai_nopad_ci
|
||||
PARTITION BY RANGE COLUMNS (a)
|
||||
(
|
||||
PARTITION p0 VALUES LESS THAN (' '),
|
||||
PARTITION p VALUES LESS THAN ('')
|
||||
);
|
||||
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT NOT NULL,
|
||||
data VARCHAR(2),
|
||||
KEY data_id (data(1),id)
|
||||
) COLLATE tis620_thai_nopad_ci ENGINE=MyISAM
|
||||
PARTITION BY RANGE (id)
|
||||
(
|
||||
PARTITION p10 VALUES LESS THAN (10),
|
||||
PARTITION p20 VALUES LESS THAN (20)
|
||||
);
|
||||
INSERT INTO t1 VALUES (4, 'ab'), (14, 'ab'), (19,''),(9,'') ;
|
||||
SELECT id FROM t1 WHERE data='' ORDER BY id;
|
||||
id
|
||||
9
|
||||
19
|
||||
DROP TABLE t1;
|
52
mysql-test/suite/parts/t/part_ctype_tis620.test
Normal file
52
mysql-test/suite/parts/t/part_ctype_tis620.test
Normal file
@ -0,0 +1,52 @@
|
||||
--source include/have_partition.inc
|
||||
--source include/have_tis620.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-27768 MDEV-25440: Assertion `(cs->state & 0x20000) == 0' failed in my_strnncollsp_nchars_generic_8bit
|
||||
--echo #
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
CREATE TABLE t1 (
|
||||
a CHAR
|
||||
) COLLATE=tis620_thai_nopad_ci
|
||||
PARTITION BY RANGE COLUMNS (a)
|
||||
(
|
||||
PARTITION p0 VALUES LESS THAN (''),
|
||||
PARTITION p VALUES LESS THAN ('')
|
||||
);
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
CREATE TABLE t1 (
|
||||
a CHAR
|
||||
) COLLATE=tis620_thai_nopad_ci
|
||||
PARTITION BY RANGE COLUMNS (a)
|
||||
(
|
||||
PARTITION p0 VALUES LESS THAN (''),
|
||||
PARTITION p VALUES LESS THAN (' ')
|
||||
);
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
CREATE TABLE t1 (
|
||||
a CHAR
|
||||
) COLLATE=tis620_thai_nopad_ci
|
||||
PARTITION BY RANGE COLUMNS (a)
|
||||
(
|
||||
PARTITION p0 VALUES LESS THAN (' '),
|
||||
PARTITION p VALUES LESS THAN ('')
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT NOT NULL,
|
||||
data VARCHAR(2),
|
||||
KEY data_id (data(1),id)
|
||||
) COLLATE tis620_thai_nopad_ci ENGINE=MyISAM
|
||||
PARTITION BY RANGE (id)
|
||||
(
|
||||
PARTITION p10 VALUES LESS THAN (10),
|
||||
PARTITION p20 VALUES LESS THAN (20)
|
||||
);
|
||||
INSERT INTO t1 VALUES (4, 'ab'), (14, 'ab'), (19,''),(9,'') ;
|
||||
SELECT id FROM t1 WHERE data='' ORDER BY id;
|
||||
DROP TABLE t1;
|
@ -100,3 +100,14 @@ show status like "Feature_application_time_periods";
|
||||
Variable_name Value
|
||||
Feature_application_time_periods 6
|
||||
drop table t;
|
||||
# MDEV-29387: Period name with more than 32 symbols crashes the server
|
||||
#
|
||||
# test 34 symbols
|
||||
create table t2 (s date, e date,
|
||||
period for `abcd123456789012345678901234567890` (s,e));
|
||||
drop table t2;
|
||||
# test 64 symbols
|
||||
create table t2 (s date, e date, period for
|
||||
`abcd123456789012345678901234567890123456789012345678901234567890`
|
||||
(s,e));
|
||||
drop table t2;
|
||||
|
@ -397,3 +397,27 @@ insert into t1 values (1,'2020-01-01','2020-02-20');
|
||||
delete from t1 for portion of se from '2020-01-30' to '2020-01-31';
|
||||
drop table t1;
|
||||
# End of 10.5 tests
|
||||
#
|
||||
# MDEV-19190 Assertion `part_share->auto_inc_initialized` failed in
|
||||
# ha_partition::get_auto_increment
|
||||
#
|
||||
create table t1 (id int, s date, e date, period for app(s,e))
|
||||
partition by key(id);
|
||||
insert into t1 (s,e) values ('2023-07-21','2024-06-07');
|
||||
alter table t1 modify id int auto_increment key;
|
||||
delete from t1 for portion of app from '2023-07-20' to '2024-05-23';
|
||||
select * from t1;
|
||||
id s e
|
||||
2 2024-05-23 2024-06-07
|
||||
drop table t1;
|
||||
create table t1 (id int, s date, e date, period for app(s,e))
|
||||
partition by key(id);
|
||||
insert into t1 (s,e) values ('2023-07-21','2024-06-07');
|
||||
alter table t1 modify id int auto_increment key;
|
||||
delete from t1 for portion of app from '2023-07-20' to '2024-05-23';
|
||||
select * from t1;
|
||||
id s e
|
||||
2 2024-05-23 2024-06-07
|
||||
drop table t1;
|
||||
drop table log_tbl;
|
||||
drop procedure log;
|
||||
|
@ -85,3 +85,17 @@ insert t values (2, '2001-01-01', '2001-01-01');
|
||||
show status like "Feature_application_time_periods";
|
||||
|
||||
drop table t;
|
||||
|
||||
--echo # MDEV-29387: Period name with more than 32 symbols crashes the server
|
||||
--echo #
|
||||
|
||||
--echo # test 34 symbols
|
||||
create table t2 (s date, e date,
|
||||
period for `abcd123456789012345678901234567890` (s,e));
|
||||
drop table t2;
|
||||
|
||||
--echo # test 64 symbols
|
||||
create table t2 (s date, e date, period for
|
||||
`abcd123456789012345678901234567890123456789012345678901234567890`
|
||||
(s,e));
|
||||
drop table t2;
|
||||
|
@ -1,5 +1,6 @@
|
||||
source suite/period/engines.inc;
|
||||
source include/have_log_bin.inc;
|
||||
source include/have_partition.inc;
|
||||
|
||||
create table t (id int, s date, e date, period for apptime(s,e));
|
||||
|
||||
@ -240,3 +241,30 @@ delete from t1 for portion of se from '2020-01-30' to '2020-01-31';
|
||||
drop table t1;
|
||||
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
--echo # MDEV-19190 Assertion `part_share->auto_inc_initialized` failed in
|
||||
--echo # ha_partition::get_auto_increment
|
||||
--echo #
|
||||
create table t1 (id int, s date, e date, period for app(s,e))
|
||||
partition by key(id);
|
||||
insert into t1 (s,e) values ('2023-07-21','2024-06-07');
|
||||
alter table t1 modify id int auto_increment key;
|
||||
delete from t1 for portion of app from '2023-07-20' to '2024-05-23';
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
create table t1 (id int, s date, e date, period for app(s,e))
|
||||
partition by key(id);
|
||||
insert into t1 (s,e) values ('2023-07-21','2024-06-07');
|
||||
alter table t1 modify id int auto_increment key;
|
||||
--let $trig_table=t1
|
||||
--let $trig_cols=id, s, e
|
||||
--disable_query_log
|
||||
--source suite/period/create_triggers.inc
|
||||
--enable_query_log
|
||||
|
||||
delete from t1 for portion of app from '2023-07-20' to '2024-05-23';
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
drop table log_tbl;
|
||||
drop procedure log;
|
||||
|
@ -4534,7 +4534,7 @@ void handler::print_error(int error, myf errflag)
|
||||
break;
|
||||
case HA_ERR_AUTOINC_ERANGE:
|
||||
textno= error;
|
||||
my_error(textno, errflag, table->next_number_field->field_name.str,
|
||||
my_error(textno, errflag, table->found_next_number_field->field_name.str,
|
||||
table->in_use->get_stmt_da()->current_row_for_warning());
|
||||
DBUG_VOID_RETURN;
|
||||
break;
|
||||
|
@ -7342,9 +7342,9 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi,
|
||||
mi->ssl_ca[0]?mi->ssl_ca:0,
|
||||
mi->ssl_capath[0]?mi->ssl_capath:0,
|
||||
mi->ssl_cipher[0]?mi->ssl_cipher:0);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||
&mi->ssl_verify_server_cert);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH,
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRL,
|
||||
mi->ssl_crl[0] ? mi->ssl_crl : 0);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH,
|
||||
mi->ssl_crlpath[0] ? mi->ssl_crlpath : 0);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||
&mi->ssl_verify_server_cert);
|
||||
|
@ -29,7 +29,7 @@
|
||||
/* extra 4+4 bytes for slave tmp tables */
|
||||
#define MAX_DBKEY_LENGTH (NAME_LEN*2+1+1+4+4)
|
||||
#define MAX_ALIAS_NAME 256
|
||||
#define MAX_FIELD_NAME 34 /* Max colum name length +2 */
|
||||
#define MAX_FIELD_NAME (NAME_LEN+1) /* Max colum name length +1 */
|
||||
#define MAX_SYS_VAR_LENGTH 32
|
||||
#define MAX_KEY MAX_INDEXES /* Max used keys */
|
||||
#define MAX_REF_PARTS 32 /* Max parts used as ref */
|
||||
|
@ -704,6 +704,10 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
|
||||
{
|
||||
table->use_all_columns();
|
||||
table->rpl_write_set= table->write_set;
|
||||
// Initialize autoinc.
|
||||
// We don't set next_number_field here, as it is handled manually.
|
||||
if (table->found_next_number_field)
|
||||
table->file->info(HA_STATUS_AUTO);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1138,7 +1138,7 @@ static bool wsrep_tables_accessible_when_detached(const TABLE_LIST *tables)
|
||||
if (get_table_category(&db, &tn) < TABLE_CATEGORY_INFORMATION)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return tables != NULL;
|
||||
}
|
||||
|
||||
static bool wsrep_command_no_result(char command)
|
||||
@ -3689,6 +3689,8 @@ mysql_execute_command(THD *thd, bool is_called_from_prepared_stmt)
|
||||
(sql_command_flags[lex->sql_command] & CF_CHANGES_DATA) == 0) &&
|
||||
!wsrep_tables_accessible_when_detached(all_tables) &&
|
||||
lex->sql_command != SQLCOM_SET_OPTION &&
|
||||
lex->sql_command != SQLCOM_CHANGE_DB &&
|
||||
!(lex->sql_command == SQLCOM_SELECT && !all_tables) &&
|
||||
!wsrep_is_show_query(lex->sql_command))
|
||||
{
|
||||
my_message(ER_UNKNOWN_COM_ERROR,
|
||||
|
@ -8995,6 +8995,7 @@ int TABLE::update_generated_fields()
|
||||
res= found_next_number_field->set_default();
|
||||
if (likely(!res))
|
||||
res= file->update_auto_increment();
|
||||
next_number_field= NULL;
|
||||
}
|
||||
|
||||
if (likely(!res) && vfield)
|
||||
|
@ -129,6 +129,7 @@ ulong wsrep_trx_fragment_unit= WSREP_FRAG_BYTES;
|
||||
ulong wsrep_SR_store_type= WSREP_SR_STORE_TABLE;
|
||||
uint wsrep_ignore_apply_errors= 0;
|
||||
|
||||
std::atomic <bool> wsrep_thread_create_failed;
|
||||
|
||||
/*
|
||||
* End configuration options
|
||||
@ -3480,7 +3481,7 @@ int wsrep_create_trigger_query(THD *thd, uchar** buf, size_t* buf_len)
|
||||
|
||||
void* start_wsrep_THD(void *arg)
|
||||
{
|
||||
THD *thd;
|
||||
THD *thd= NULL;
|
||||
|
||||
Wsrep_thd_args* thd_args= (Wsrep_thd_args*) arg;
|
||||
|
||||
@ -3511,6 +3512,7 @@ void* start_wsrep_THD(void *arg)
|
||||
mysql_thread_set_psi_id(thd->thread_id);
|
||||
thd->thr_create_utime= microsecond_interval_timer();
|
||||
|
||||
DBUG_EXECUTE_IF("wsrep_simulate_failed_connection_1", goto error; );
|
||||
// </5.1.17>
|
||||
/*
|
||||
handle_one_connection() is normally the only way a thread would
|
||||
@ -3617,6 +3619,18 @@ void* start_wsrep_THD(void *arg)
|
||||
error:
|
||||
WSREP_ERROR("Failed to create/initialize system thread");
|
||||
|
||||
if (thd)
|
||||
{
|
||||
close_connection(thd, ER_OUT_OF_RESOURCES);
|
||||
statistic_increment(aborted_connects, &LOCK_status);
|
||||
server_threads.erase(thd);
|
||||
delete thd;
|
||||
my_thread_end();
|
||||
}
|
||||
delete thd_args;
|
||||
// This will signal error to wsrep_slave_threads_update
|
||||
wsrep_thread_create_failed.store(true, std::memory_order_relaxed);
|
||||
|
||||
/* Abort if its the first applier/rollbacker thread. */
|
||||
if (!mysqld_server_initialized)
|
||||
unireg_abort(1);
|
||||
|
@ -89,6 +89,7 @@ extern ulong wsrep_running_rollbacker_threads;
|
||||
extern bool wsrep_new_cluster;
|
||||
extern bool wsrep_gtid_mode;
|
||||
extern uint32 wsrep_gtid_domain_id;
|
||||
extern std::atomic <bool > wsrep_thread_create_failed;
|
||||
extern ulonglong wsrep_mode;
|
||||
extern my_bool wsrep_strict_ddl;
|
||||
|
||||
|
@ -23,8 +23,7 @@
|
||||
#include "rpl_rli.h"
|
||||
#include "log_event.h"
|
||||
#include "sql_parse.h"
|
||||
#include "mysqld.h" // start_wsrep_THD();
|
||||
#include "wsrep_applier.h" // start_wsrep_THD();
|
||||
#include "wsrep_mysqld.h" // start_wsrep_THD();
|
||||
#include "mysql/service_wsrep.h"
|
||||
#include "debug_sync.h"
|
||||
#include "slave.h"
|
||||
|
@ -789,18 +789,25 @@ bool wsrep_slave_threads_update (sys_var *self, THD* thd, enum_var_type type)
|
||||
if (wsrep_slave_count_change > 0)
|
||||
{
|
||||
WSREP_DEBUG("Creating %d applier threads, total %ld", wsrep_slave_count_change, wsrep_slave_threads);
|
||||
wsrep_thread_create_failed.store(false, std::memory_order_relaxed);
|
||||
res= wsrep_create_appliers(wsrep_slave_count_change, true);
|
||||
mysql_mutex_unlock(&LOCK_global_system_variables);
|
||||
mysql_mutex_unlock(&LOCK_wsrep_slave_threads);
|
||||
// Thread creation and execution is asyncronous, therefore we need
|
||||
// wait them to be started or error produced
|
||||
while (wsrep_running_applier_threads != (ulong)wsrep_slave_threads)
|
||||
while (wsrep_running_applier_threads != (ulong)wsrep_slave_threads &&
|
||||
!wsrep_thread_create_failed.load(std::memory_order_relaxed))
|
||||
{
|
||||
my_sleep(1000);
|
||||
}
|
||||
|
||||
mysql_mutex_lock(&LOCK_global_system_variables);
|
||||
|
||||
if (wsrep_thread_create_failed.load(std::memory_order_relaxed)) {
|
||||
wsrep_slave_threads= wsrep_running_applier_threads;
|
||||
return true;
|
||||
}
|
||||
|
||||
WSREP_DEBUG("Running %lu applier threads", wsrep_running_applier_threads);
|
||||
wsrep_slave_count_change = 0;
|
||||
}
|
||||
|
@ -589,6 +589,18 @@ ret:
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
my_strnncollsp_nchars_tis620(CHARSET_INFO * cs,
|
||||
const uchar *a, size_t a_length,
|
||||
const uchar *b, size_t b_length,
|
||||
size_t nchars)
|
||||
{
|
||||
set_if_smaller(a_length, nchars);
|
||||
set_if_smaller(b_length, nchars);
|
||||
return my_strnncollsp_tis620(cs, a, a_length, b, b_length);
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
int my_strnncollsp_tis620_nopad(CHARSET_INFO * cs __attribute__((unused)),
|
||||
const uchar *a0, size_t a_length,
|
||||
@ -856,7 +868,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
|
||||
NULL, /* init */
|
||||
my_strnncoll_tis620,
|
||||
my_strnncollsp_tis620,
|
||||
my_strnncollsp_nchars_generic_8bit,
|
||||
my_strnncollsp_nchars_tis620,
|
||||
my_strnxfrm_tis620,
|
||||
my_strnxfrmlen_simple,
|
||||
my_like_range_simple,
|
||||
@ -874,7 +886,7 @@ static MY_COLLATION_HANDLER my_collation_nopad_ci_handler =
|
||||
NULL, /* init */
|
||||
my_strnncoll_tis620,
|
||||
my_strnncollsp_tis620_nopad,
|
||||
my_strnncollsp_nchars_generic_8bit,
|
||||
my_strnncollsp_nchars_tis620,
|
||||
my_strnxfrm_tis620_nopad,
|
||||
my_strnxfrmlen_simple,
|
||||
my_like_range_simple,
|
||||
|
@ -1469,6 +1469,7 @@ test_strnncollsp_char()
|
||||
|
||||
#ifdef HAVE_CHARSET_tis620
|
||||
failed+= strnncollsp_char_mbminlen1("tis620_thai_ci", NULL);
|
||||
failed+= strnncollsp_char_mbminlen1("tis620_thai_nopad_ci", NULL);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CHARSET_big5
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 8bfce04189671eb1f06e0fa83dff8c880f31088f
|
||||
Subproject commit f8ff2cfdd4c6424ffd96fc53bcc0f2e1d9ffe137
|
Loading…
x
Reference in New Issue
Block a user