mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '11.0' into 11.1
This commit is contained in:
@@ -3,25 +3,40 @@
|
||||
#
|
||||
for master_1
|
||||
for child2
|
||||
child2_1
|
||||
child2_2
|
||||
child2_3
|
||||
for child3
|
||||
CREATE SERVER IF NOT EXISTS $srv FOREIGN DATA WRAPPER MYSQL OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE 'test',user 'root');
|
||||
SET @old_wait_timeout = @@global.wait_timeout;
|
||||
SET GLOBAL wait_timeout=1;
|
||||
CREATE TABLE t (c INT KEY,c1 BLOB,c2 TEXT) ENGINE=Spider COMMENT='WRAPPER "mysql",srv "srv_mdev_31463"';
|
||||
XA START 'a';
|
||||
INSERT INTO t VALUES (0,0,0,0);
|
||||
ERROR 21S01: Column count doesn't match value count at row 1
|
||||
SELECT SLEEP (1);
|
||||
SLEEP (1)
|
||||
0
|
||||
INSERT INTO t VALUES (1,2,3),(4,5,6),(7,8,9);
|
||||
Got one of the listed errors
|
||||
SELECT * FROM information_schema.key_column_usage;
|
||||
XA END 'a';
|
||||
XA PREPARE 'a';
|
||||
XA COMMIT 'a';
|
||||
SET GLOBAL wait_timeout=@old_wait_timeout;
|
||||
drop table t;
|
||||
connection child2_1;
|
||||
CREATE DATABASE auto_test_remote;
|
||||
USE auto_test_remote;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
connection master_1;
|
||||
CREATE DATABASE auto_test_local;
|
||||
USE auto_test_local;
|
||||
CREATE TABLE t2 (a INT) ENGINE=Spider COMMENT='table "t1", srv "s_2_1"';
|
||||
connect master_1_another, localhost, root, , auto_test_local, $MASTER_1_MYPORT, $MASTER_1_MYSOCK;
|
||||
SET DEBUG_SYNC='spider_set_lock_wait_timeout_before_query SIGNAL ready WAIT_FOR go';
|
||||
insert into t2 values (42);
|
||||
connection master_1;
|
||||
SET DEBUG_SYNC='now WAIT_FOR ready';
|
||||
connection child2_1;
|
||||
connection master_1;
|
||||
SET DEBUG_SYNC='now SIGNAL go';
|
||||
connection master_1_another;
|
||||
ERROR HY000: Got an error writing communication packets
|
||||
connection master_1;
|
||||
DROP DATABASE IF EXISTS auto_test_local;
|
||||
connection child2_1;
|
||||
# restart
|
||||
connection child2_1;
|
||||
DROP DATABASE IF EXISTS auto_test_remote;
|
||||
for master_1
|
||||
for child2
|
||||
child2_1
|
||||
child2_2
|
||||
child2_3
|
||||
for child3
|
||||
#
|
||||
# end test
|
||||
#
|
||||
|
3
storage/spider/mysql-test/spider/bugfix/t/mdev_31463.cnf
Normal file
3
storage/spider/mysql-test/spider/bugfix/t/mdev_31463.cnf
Normal file
@@ -0,0 +1,3 @@
|
||||
!include include/default_mysqld.cnf
|
||||
!include ../my_1_1.cnf
|
||||
!include ../my_2_1.cnf
|
@@ -1,47 +1,65 @@
|
||||
--source include/have_debug.inc
|
||||
--echo #
|
||||
--echo # MDEV-31463 SIGSEGV in server_mysql_send_query | server_mysql_real_query
|
||||
--echo #
|
||||
|
||||
# The original test in the report of MDEV-31463 is contrived and
|
||||
# nondeterministic, causing MDEV-31586. This test more directly
|
||||
# addresses the underlying issue causing MDEV-31463, namely errors
|
||||
# from queries sent to the data node not consumed when trying to set
|
||||
# lock wait timeout.
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source ../../t/test_init.inc
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
||||
--let $srv=srv_mdev_31463
|
||||
--disable_warnings
|
||||
evalp CREATE SERVER IF NOT EXISTS $srv FOREIGN DATA WRAPPER MYSQL OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE 'test',user 'root');
|
||||
--enable_warnings
|
||||
connection child2_1;
|
||||
CREATE DATABASE auto_test_remote;
|
||||
USE auto_test_remote;
|
||||
eval CREATE TABLE t1 (a INT) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
|
||||
|
||||
SET @old_wait_timeout = @@global.wait_timeout;
|
||||
SET GLOBAL wait_timeout=1;
|
||||
eval CREATE TABLE t (c INT KEY,c1 BLOB,c2 TEXT) ENGINE=Spider COMMENT='WRAPPER "mysql",srv "$srv"';
|
||||
XA START 'a';
|
||||
--error ER_WRONG_VALUE_COUNT_ON_ROW
|
||||
INSERT INTO t VALUES (0,0,0,0);
|
||||
SELECT SLEEP (1);
|
||||
# MDEV-31586: The error code is non-deterministic, presumably due to
|
||||
# some race condition from the SLEEP statement above. The correct
|
||||
# error should be 12701 ER_SPIDER_REMOTE_SERVER_GONE_AWAY_NUM as it is
|
||||
# the last failure. Nevertheless, this contrived test is needed to
|
||||
# cover the error reporting when setting lock wait timeout, until we
|
||||
# find a better one and/or fixing the non-deterministic error
|
||||
# reporting
|
||||
--error 12701,ER_NET_READ_ERROR,ER_NET_ERROR_ON_WRITE,ER_XAER_DUPID
|
||||
INSERT INTO t VALUES (1,2,3),(4,5,6),(7,8,9);
|
||||
--disable_result_log
|
||||
--error 0,12701,ER_XAER_DUPID
|
||||
SELECT * FROM information_schema.key_column_usage;
|
||||
--enable_result_log
|
||||
connection master_1;
|
||||
CREATE DATABASE auto_test_local;
|
||||
USE auto_test_local;
|
||||
eval CREATE TABLE t2 (a INT) $MASTER_1_ENGINE COMMENT='table "t1", srv "s_2_1"';
|
||||
|
||||
XA END 'a';
|
||||
XA PREPARE 'a';
|
||||
XA COMMIT 'a';
|
||||
SET GLOBAL wait_timeout=@old_wait_timeout;
|
||||
drop table t;
|
||||
# Create a new thread on the spider node server, send an insert query
|
||||
# to the spider node. Shutdown the data node server when the query
|
||||
# reaches and waits at set lockwait timeout so it fails there. Check
|
||||
# the error code is correct.
|
||||
connect (master_1_another, localhost, root, , auto_test_local, $MASTER_1_MYPORT, $MASTER_1_MYSOCK);
|
||||
SET DEBUG_SYNC='spider_set_lock_wait_timeout_before_query SIGNAL ready WAIT_FOR go';
|
||||
send insert into t2 values (42);
|
||||
connection master_1;
|
||||
SET DEBUG_SYNC='now WAIT_FOR ready';
|
||||
|
||||
connection child2_1;
|
||||
let $shutdown_timeout=0;
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
connection master_1;
|
||||
SET DEBUG_SYNC='now SIGNAL go';
|
||||
connection master_1_another;
|
||||
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
|
||||
reap;
|
||||
|
||||
# Cleanup
|
||||
connection master_1;
|
||||
DROP DATABASE IF EXISTS auto_test_local;
|
||||
|
||||
connection child2_1;
|
||||
--source include/start_mysqld.inc
|
||||
connection child2_1;
|
||||
DROP DATABASE IF EXISTS auto_test_remote;
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source ../../t/test_deinit.inc
|
||||
--enable_result_log
|
||||
--source ../t/test_deinit.inc
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
--echo #
|
||||
--echo # end test
|
||||
--echo #
|
||||
|
Reference in New Issue
Block a user