mirror of
https://github.com/MariaDB/server.git
synced 2025-07-02 14:22:51 +03:00
Merge 10.1 into 10.2
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
#
|
#
|
||||||
|
@ -43,7 +43,8 @@ MACRO(CHECK_DTRACE)
|
|||||||
IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD"
|
IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD"
|
||||||
AND NOT BUGGY_GCC_NO_DTRACE_MODULES
|
AND NOT BUGGY_GCC_NO_DTRACE_MODULES
|
||||||
AND NOT BUGGY_LINUX_DTRACE
|
AND NOT BUGGY_LINUX_DTRACE
|
||||||
AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS"
|
||||||
|
AND NOT WIN32)
|
||||||
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
|
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
# On GNU/Hurd, dtrace is not supported
|
# On GNU/Hurd, dtrace is not supported
|
||||||
|
@ -486,6 +486,7 @@ static int DbugParse(CODE_STATE *cs, const char *control)
|
|||||||
rel= control[0] == '+' || control[0] == '-';
|
rel= control[0] == '+' || control[0] == '-';
|
||||||
if ((!rel || (!stack->out_file && !stack->next)))
|
if ((!rel || (!stack->out_file && !stack->next)))
|
||||||
{
|
{
|
||||||
|
LockIfInitSettings(cs);
|
||||||
FreeState(cs, 0);
|
FreeState(cs, 0);
|
||||||
stack->flags= 0;
|
stack->flags= 0;
|
||||||
stack->delay= 0;
|
stack->delay= 0;
|
||||||
@ -493,10 +494,9 @@ static int DbugParse(CODE_STATE *cs, const char *control)
|
|||||||
stack->sub_level= 0;
|
stack->sub_level= 0;
|
||||||
stack->out_file= sstderr;
|
stack->out_file= sstderr;
|
||||||
stack->functions= NULL;
|
stack->functions= NULL;
|
||||||
LockIfInitSettings(cs);
|
|
||||||
stack->keywords= NULL;
|
stack->keywords= NULL;
|
||||||
UnlockIfInitSettings(cs);
|
|
||||||
stack->processes= NULL;
|
stack->processes= NULL;
|
||||||
|
UnlockIfInitSettings(cs);
|
||||||
}
|
}
|
||||||
else if (!stack->out_file)
|
else if (!stack->out_file)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# Copyright (c) 2002 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2002 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
die <<EEE unless @ARGV;
|
die <<EEE unless @ARGV;
|
||||||
Usage: $0 func1 [func2 [ ...] ]
|
Usage: $0 func1 [func2 [ ...] ]
|
||||||
|
2
debian/additions/mysqlreport
vendored
2
debian/additions/mysqlreport
vendored
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/env perl -w
|
||||||
|
|
||||||
# mysqlreport v4.0 Oct 23 2015
|
# mysqlreport v4.0 Oct 23 2015
|
||||||
# http://hackmysql.com/mysqlreport
|
# http://hackmysql.com/mysqlreport
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# Copyright (C) 2006 MySQL AB
|
# Copyright (C) 2006 MySQL AB
|
||||||
# Use is subject to license terms
|
# Use is subject to license terms
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# This script processes a .gcov coverage report to honor purecov
|
# This script processes a .gcov coverage report to honor purecov
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2007, 2008 MySQL AB
|
# Copyright (c) 2007, 2008 MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2007 MySQL AB
|
# Copyright (c) 2007 MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2007 MySQL AB
|
# Copyright (c) 2007 MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2007 MySQL AB
|
# Copyright (c) 2007 MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2007 MySQL AB
|
# Copyright (c) 2007 MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2007 MySQL AB
|
# Copyright (c) 2007 MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Call mtr in out-of-source build
|
# Call mtr in out-of-source build
|
||||||
$ENV{MTR_BINDIR} = '@CMAKE_BINARY_DIR@';
|
$ENV{MTR_BINDIR} = '@CMAKE_BINARY_DIR@';
|
||||||
chdir('@CMAKE_SOURCE_DIR@/mysql-test');
|
chdir('@CMAKE_SOURCE_DIR@/mysql-test');
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- cperl -*-
|
# -*- cperl -*-
|
||||||
|
|
||||||
# Copyright (c) 2004, 2014, Oracle and/or its affiliates.
|
# Copyright (c) 2004, 2014, Oracle and/or its affiliates.
|
||||||
|
@ -2174,3 +2174,13 @@ column_name
|
|||||||
c1
|
c1
|
||||||
c2
|
c2
|
||||||
DROP TABLE tt1, tt2;
|
DROP TABLE tt1, tt2;
|
||||||
|
#
|
||||||
|
# MDEV-13242 Wrong results for queries with row constructors and information_schema
|
||||||
|
#
|
||||||
|
SELECT SCHEMA_NAME from information_schema.schemata where schema_name='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
|
||||||
|
SCHEMA_NAME
|
||||||
|
SELECT SCHEMA_NAME from information_schema.schemata where schema_name=REPEAT('a',193);
|
||||||
|
SCHEMA_NAME
|
||||||
|
#
|
||||||
|
# End of 10.1 tests
|
||||||
|
#
|
||||||
|
20
mysql-test/r/nested_profiling.result
Normal file
20
mysql-test/r/nested_profiling.result
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
SET @saved_profiling=@@GLOBAL.profiling;
|
||||||
|
SET @saved_init_connect=@@GLOBAL.init_connect;
|
||||||
|
SET GLOBAL init_connect="set @a=2;set @b=3";
|
||||||
|
SET GLOBAL profiling=on;
|
||||||
|
create user mysqltest1@localhost;
|
||||||
|
connect con1,localhost,mysqltest1,,;
|
||||||
|
connection con1;
|
||||||
|
SELECT @a, @b;
|
||||||
|
@a @b
|
||||||
|
2 3
|
||||||
|
SHOW PROFILES;
|
||||||
|
Query_ID Duration Query
|
||||||
|
1 # set @a=2;set @b=3
|
||||||
|
2 # set @b=3
|
||||||
|
3 # SELECT @a, @b
|
||||||
|
connection default;
|
||||||
|
disconnect con1;
|
||||||
|
DROP USER mysqltest1@localhost;
|
||||||
|
SET GLOBAL profiling=@saved_profiling;
|
||||||
|
SET GLOBAL init_connect=@saved_init_connect;
|
@ -2567,6 +2567,24 @@ sum(a) a b
|
|||||||
6 1 1
|
6 1 1
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
|
# MDEV-17606: Query returns wrong results (while using CHARACTER SET utf8)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(l1 varchar(10), i2 int);
|
||||||
|
INSERT INTO t1 VALUES ('e',2),('o',6),('x',4);
|
||||||
|
CREATE TABLE t2 (v1 varchar(10) CHARACTER SET utf8, KEY v1 (v1(3)));
|
||||||
|
INSERT INTO t2 VALUES ('k'),('rid'),('f'),('x');
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 where ( t1.l1 < ANY (SELECT MAX(t2.v1) FROM t2));
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
|
2 SUBQUERY t2 ALL NULL NULL NULL NULL 4 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`l1` AS `l1`,`test`.`t1`.`i2` AS `i2` from `test`.`t1` where <nop>(<in_optimizer>(`test`.`t1`.`l1`,<max>(select max(`test`.`t2`.`v1`) from `test`.`t2`) > convert(<cache>(`test`.`t1`.`l1`) using utf8)))
|
||||||
|
SELECT * FROM t1 where ( t1.l1 < ANY (SELECT MAX(t2.v1) FROM t2));
|
||||||
|
l1 i2
|
||||||
|
e 2
|
||||||
|
o 6
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
# MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
# MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
||||||
#
|
#
|
||||||
SET @save_optimizer_switch=@@optimizer_switch;
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
@ -2578,3 +2596,4 @@ SELECT (SELECT DISTINCT t1i.b FROM t1 t1i GROUP BY t1i.a ORDER BY MAX(t1o.b)) FR
|
|||||||
0
|
0
|
||||||
SET @@optimizer_switch= @save_optimizer_switch;
|
SET @@optimizer_switch= @save_optimizer_switch;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
# End of 10.2 tests
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# Copyright (c) 2011, Oracle and/or its affiliates
|
# Copyright (c) 2011, Oracle and/or its affiliates
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# This script runs the transactional stress test "stress_tx_rr" against the
|
# This script runs the transactional stress test "stress_tx_rr" against the
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
|
||||||
if ( (scalar(@ARGV) != 1 ) || ($ARGV[0] =~ /[^0-9]/i ) )
|
if ( (scalar(@ARGV) != 1 ) || ($ARGV[0] =~ /[^0-9]/i ) )
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
|
||||||
if ( (scalar(@ARGV) != 2 ) || ($ARGV[0] =~ /[^0-9]/i ) )
|
if ( (scalar(@ARGV) != 2 ) || ($ARGV[0] =~ /[^0-9]/i ) )
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
#################################################################################
|
#################################################################################
|
||||||
# Author: Serge Kozlov #
|
# Author: Serge Kozlov #
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
--source include/have_binlog_format_row.inc
|
--source include/have_binlog_format_row.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
--source include/have_debug_sync.inc
|
--source include/have_debug_sync.inc
|
||||||
|
--source include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
--connection node_2
|
--connection node_2
|
||||||
# Make sure no signals have been leftover from previous tests to surprise us.
|
# Make sure no signals have been leftover from previous tests to surprise us.
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
#
|
#
|
||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
--source include/have_binlog_format_row.inc
|
--source include/have_binlog_format_row.inc
|
||||||
|
--source include/have_debug.inc
|
||||||
--source include/have_debug_sync.inc
|
--source include/have_debug_sync.inc
|
||||||
|
--source include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
--connection node_2
|
--connection node_2
|
||||||
# Make sure no signals have been leftover from previous tests to surprise us.
|
# Make sure no signals have been leftover from previous tests to surprise us.
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_debug.inc
|
||||||
--source include/have_debug_sync.inc
|
--source include/have_debug_sync.inc
|
||||||
--source include/have_query_cache.inc
|
--source include/have_query_cache.inc
|
||||||
|
--source include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
|
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1);
|
INSERT INTO t1 VALUES (1);
|
||||||
|
@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_debug.inc
|
||||||
--source include/have_debug_sync.inc
|
--source include/have_debug_sync.inc
|
||||||
|
--source include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
|
|
||||||
|
@ -4,9 +4,12 @@ VARIABLE_VALUE LIKE '%[::1]%'
|
|||||||
SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
VARIABLE_VALUE = 3
|
VARIABLE_VALUE = 3
|
||||||
1
|
1
|
||||||
|
connection node_2;
|
||||||
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
connection node_1;
|
||||||
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1);
|
INSERT INTO t1 VALUES (1);
|
||||||
|
connection node_2;
|
||||||
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
SELECT COUNT(*) = 1 FROM t1;
|
SELECT COUNT(*) = 1 FROM t1;
|
||||||
COUNT(*) = 1
|
COUNT(*) = 1
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, node INT) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (2, 3);
|
||||||
|
SET wsrep_sync_wait = 0;
|
||||||
|
SET wsrep_on = OFF;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,after_shift_to_joining';
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (3, 2);
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (4, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (5, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,before_send_state_request';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=after_shift_to_joining';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (6, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (7, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (8, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,process_primary_configuration';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=before_send_state_request';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
INSERT INTO t1 VALUES (9, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=process_primary_configuration';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=process_primary_configuration';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
DROP TABLE t1;
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
@ -0,0 +1,50 @@
|
|||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, node INT) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (2, 3);
|
||||||
|
SET wsrep_sync_wait = 0;
|
||||||
|
SET wsrep_on = OFF;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,after_shift_to_joining';
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (3, 2);
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (4, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (5, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,before_send_state_request';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=after_shift_to_joining';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=before_send_state_request';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters';
|
||||||
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
|
WSREP_DEBUG_SYNC_WAITERS after_shift_to_joining
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (6, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (7, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (8, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,process_primary_configuration';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=after_shift_to_joining';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
INSERT INTO t1 VALUES (9, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=process_primary_configuration';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters';
|
||||||
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
|
WSREP_DEBUG_SYNC_WAITERS process_primary_configuration
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=process_primary_configuration';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
DROP TABLE t1;
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
@ -0,0 +1,55 @@
|
|||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, node INT) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (2, 3);
|
||||||
|
SET wsrep_sync_wait = 0;
|
||||||
|
SET wsrep_on = OFF;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,after_shift_to_joining';
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (3, 2);
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (4, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (5, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,before_send_state_request';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=after_shift_to_joining';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,after_shift_to_joining';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=before_send_state_request';
|
||||||
|
4
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters';
|
||||||
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
|
WSREP_DEBUG_SYNC_WAITERS
|
||||||
|
INSERT INTO t1 VALUES (6, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
INSERT INTO t1 VALUES (7, 2);
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,process_primary_configuration';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=after_shift_to_joining';
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
INSERT INTO t1 VALUES (8, 3);
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
INSERT INTO t1 VALUES (9, 2);
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=process_primary_configuration';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=process_primary_configuration';
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=after_shift_to_joining';
|
||||||
|
DROP TABLE t1;
|
||||||
|
call mtr.add_suppression("WSREP: Send action {\(.*\), STATE_REQUEST} returned -107 \\(Transport endpoint is not connected\\)");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
262
mysql-test/suite/galera_3nodes/t/galera_join_with_cc_A.test
Normal file
262
mysql-test/suite/galera_3nodes/t/galera_join_with_cc_A.test
Normal file
@ -0,0 +1,262 @@
|
|||||||
|
#
|
||||||
|
# Tests handling of several configuration changes while a joiner gets
|
||||||
|
# state transfer
|
||||||
|
#
|
||||||
|
# Variant A: sending of state transfer request delayed until two more
|
||||||
|
# primary configuration changes happen
|
||||||
|
#
|
||||||
|
# Refs codersihp/galera-bugs#454
|
||||||
|
#
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source suite/galera/include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
|
--let $galera_connection_name = node_3
|
||||||
|
--let $galera_server_number = 3
|
||||||
|
--source include/galera_connect.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, node INT) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Isolate node_1 and update cluster state to force node 1 into joiner mode
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (2, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now reconnect node_1 but first make it block before sending state transfer
|
||||||
|
# request
|
||||||
|
#
|
||||||
|
# THIS IS PC1
|
||||||
|
#
|
||||||
|
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
|
SET wsrep_sync_wait = 0;
|
||||||
|
SET wsrep_on = OFF;
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (3, 2);
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
#
|
||||||
|
# At this point every node thinks that node_1 is in a JOINER state
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now that node_1 sent state request and became JOINER isolate node_1 again
|
||||||
|
# and commit one more action, so that node_1 loses JOINER state
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (4, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 4 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reconnect node_1 again
|
||||||
|
#
|
||||||
|
# THIS IS PC2
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# After this point node_1 is no longer JOINER and is required to start the
|
||||||
|
# whole procedure over because it missed some actions (4th insert into t1)
|
||||||
|
#
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (5, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 5 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now let node_1 continue with IST and finish processing PC1, but make it
|
||||||
|
# block when processing PC2 just before sending state transfer request
|
||||||
|
#
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
|
||||||
|
# since PC1 has been processed node_1 must have 3 rows in t1
|
||||||
|
# 2 were there before PC1 and one was added while in PC1
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now disconnect and reconnect node_1 again to get PC3
|
||||||
|
# It still is blocked before sending state transfer request in PC2.
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (6, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 6 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# This is PC3
|
||||||
|
#
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (7, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 7 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now disconnect and reconnect node_1 again to get PC4 and allow node_1
|
||||||
|
# to send state transfer request to be delivered in PC4 (and thus get
|
||||||
|
# updated to PC4 seqno in state transfer.
|
||||||
|
# Note that node_1 still processes PC2.
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (8, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 8 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# This is PC4. node_1 is still processing PC2, waiting to send state trasfer
|
||||||
|
# request
|
||||||
|
#
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
# sent STR from PC2 into PC4
|
||||||
|
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
#
|
||||||
|
# Now node_1 is processing PC3, but should have completed state transfer from
|
||||||
|
# PC4 and thus must have 8 rows in t1
|
||||||
|
#
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 8 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
INSERT INTO t1 VALUES (9, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 9 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
#--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
#
|
||||||
|
# Now node_1 is processing PC4, still must have 8 rows in t1
|
||||||
|
#
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 8 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 9 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
273
mysql-test/suite/galera_3nodes/t/galera_join_with_cc_B.test
Normal file
273
mysql-test/suite/galera_3nodes/t/galera_join_with_cc_B.test
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
#
|
||||||
|
# Tests handling of several configuration changes while a joiner gets
|
||||||
|
# state transfer
|
||||||
|
#
|
||||||
|
# Variant B: sending of state transfer request is immediate but completion
|
||||||
|
# of IST delayed until two more primary configuration changes happen
|
||||||
|
#
|
||||||
|
# Refs codersihp/galera-bugs#454
|
||||||
|
#
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source suite/galera/include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
|
--let $galera_connection_name = node_3
|
||||||
|
--let $galera_server_number = 3
|
||||||
|
--source include/galera_connect.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, node INT) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Isolate node_1 and update cluster state to force node 1 into joiner mode
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (2, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now reconnect node_1 but first make it block before sending state transfer
|
||||||
|
# request
|
||||||
|
#
|
||||||
|
# THIS IS PC1
|
||||||
|
#
|
||||||
|
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
|
SET wsrep_sync_wait = 0;
|
||||||
|
SET wsrep_on = OFF;
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (3, 2);
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
#
|
||||||
|
# At this point every node thinks that node_1 is in a JOINER state
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now that node_1 sent state request and became JOINER isolate node_1 again
|
||||||
|
# and commit one more action, so that node_1 loses JOINER state
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (4, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 4 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reconnect node_1 again
|
||||||
|
#
|
||||||
|
# THIS IS PC2
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# After this point node_1 is no longer JOINER and is required to start the
|
||||||
|
# whole procedure over because it missed some actions (4th insert into t1)
|
||||||
|
#
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (5, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 5 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now let node_1 continue with IST and finish processing PC1, but make it
|
||||||
|
# block when processing PC2 right after progressing to JOINER state and
|
||||||
|
# before IST happens.
|
||||||
|
#
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
# Here node_1 is processing PC2 just before sending state request
|
||||||
|
|
||||||
|
# since PC1 has been processed node_1 must have 3 rows in t1
|
||||||
|
# 2 were there before PC1 and one was added while in PC1
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
# Proceed to sending state transfer request and block right after
|
||||||
|
--source include/galera_signal_sync_point.inc # before_send_state_request
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now disconnect and reconnect node_1 again to get PC3
|
||||||
|
# It is blocked right after shifting to JOINING state.
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (6, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 6 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# This is PC3
|
||||||
|
#
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (7, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 7 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now disconnect and reconnect node_1 again to get PC4 and allow node_1
|
||||||
|
# to continue with IST.
|
||||||
|
# Note that node_1 still processes PC2 and is joining.
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (8, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 8 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# This is PC4. node_1 is still processing PC2, waiting to send state trasfer
|
||||||
|
# request
|
||||||
|
#
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
# continue with IST prepared for in PC2
|
||||||
|
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
#
|
||||||
|
# Now node_1 is processing PC3, and should have finished state transfer
|
||||||
|
# State tranfer request was dilivered before PC3, so node_1 should have
|
||||||
|
# received IST up to 4 rows in t1 (what was there before PC2) plus one more
|
||||||
|
# INSERT while in PC2.
|
||||||
|
#
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 5 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
INSERT INTO t1 VALUES (9, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 9 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
#--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters';
|
||||||
|
#
|
||||||
|
# Now node_1 is processing PC4, still must have 8 rows in t1
|
||||||
|
#
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 8 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 9 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
299
mysql-test/suite/galera_3nodes/t/galera_join_with_cc_C.test
Normal file
299
mysql-test/suite/galera_3nodes/t/galera_join_with_cc_C.test
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
#
|
||||||
|
# Tests handling of several configuration changes while a joiner gets
|
||||||
|
# state transfer
|
||||||
|
#
|
||||||
|
# Variant C: sending of state transfer request is scheduled while in non-PRIM
|
||||||
|
#
|
||||||
|
# Refs codersihp/galera-bugs#454
|
||||||
|
#
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source suite/galera/include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
|
--let $galera_connection_name = node_3
|
||||||
|
--let $galera_server_number = 3
|
||||||
|
--source include/galera_connect.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, node INT) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Isolate node_1 and update cluster state to force node 1 into joiner mode
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (2, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 2 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now reconnect node_1 but first make it block before sending state transfer
|
||||||
|
# request
|
||||||
|
#
|
||||||
|
# THIS IS PC1
|
||||||
|
#
|
||||||
|
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
|
SET wsrep_sync_wait = 0;
|
||||||
|
SET wsrep_on = OFF;
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (3, 2);
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
#
|
||||||
|
# At this point every node thinks that node_1 is in a JOINER state
|
||||||
|
#
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now that node_1 sent state request and became JOINER isolate node_1 again
|
||||||
|
# and commit one more action, so that node_1 loses JOINER state
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (4, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 4 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reconnect node_1 again
|
||||||
|
#
|
||||||
|
# THIS IS PC2
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# After this point node_1 is no longer JOINER and is required to start the
|
||||||
|
# whole procedure over because it missed some actions (4th insert into t1)
|
||||||
|
#
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (5, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 5 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now let node_1 continue with IST and finish processing PC1, but make it
|
||||||
|
# block when processing PC2 right after progressing to JOINER state and
|
||||||
|
# before IST happens.
|
||||||
|
#
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
# Here we are processing PC2 just before sending state request
|
||||||
|
|
||||||
|
# since PC1 has been processed node_1 must have 3 rows in t1
|
||||||
|
# 2 were there before PC1 and one was added while in PC1
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now disconnect and reconnect node_1 again to get PC3
|
||||||
|
# It still is blocked before sending state transfer request in PC2.
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
# Proceed to sending state transfer request
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
--let $galera_sync_point = before_send_state_request
|
||||||
|
--source include/galera_signal_sync_point.inc # before_send_state_request
|
||||||
|
#
|
||||||
|
# node_1 proceeds to sending state transfer request, it will be delivered only
|
||||||
|
# in the next PC which is PC3. Only then the node will shift to JOINING
|
||||||
|
#
|
||||||
|
--echo 4
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters';
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
INSERT INTO t1 VALUES (6, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 6 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# This is PC3
|
||||||
|
#
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (7, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 7 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
# node_1 is stiil processing PC2, it was let to send state transfer request
|
||||||
|
# while in non-PRIM. Now it should be able to complete it and shift to
|
||||||
|
# JOINING. Make it block on next PC(3) and continue to receive IST
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
--source include/galera_clear_sync_point.inc # won't need it any more
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
# continue with IST while still processing PC2
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now disconnect and reconnect node_1 again to generate PC4.
|
||||||
|
#
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=1';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (8, 3);
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 8 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
SET GLOBAL wsrep_provider_options='gmcast.isolate=0';
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# This is PC4. node_1 should complete IST, complete PC2, and continue
|
||||||
|
# with the next item in queue
|
||||||
|
#
|
||||||
|
--connection node_1a
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now node_1 is blocked before processing PC3, and should have finished state
|
||||||
|
# transfer started while in PC2.
|
||||||
|
# State tranfer request was dilivered in PC3 to donor, so node_1 should have
|
||||||
|
# received IST up to 6 rows in t1 (what was there before PC3).
|
||||||
|
#
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 6 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
INSERT INTO t1 VALUES (9, 2);
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 9 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
# continue with processing PC3
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
|
||||||
|
# wait for row that follows PC3
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 7 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
# wait till PC4
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
#
|
||||||
|
# Now node_1 is processing PC4, still must have 7 rows in t1
|
||||||
|
#
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 7 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
# Continue with PC4
|
||||||
|
--let $galera_sync_point = process_primary_configuration
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
--let $galera_sync_point = after_shift_to_joining
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 9 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
call mtr.add_suppression("WSREP: Send action {\(.*\), STATE_REQUEST} returned -107 \\(Transport endpoint is not connected\\)");
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
||||||
|
|
||||||
|
--connection node_3
|
||||||
|
call mtr.add_suppression("WSREP: Rejecting JOIN message from \(.*\): new State Transfer required.");
|
@ -278,9 +278,9 @@ select count(*) > -1 from d_sys_virtual;
|
|||||||
count(*) > -1
|
count(*) > -1
|
||||||
1
|
1
|
||||||
select count(*) > -1 from information_schema.innodb_tablespaces_encryption;
|
select count(*) > -1 from information_schema.innodb_tablespaces_encryption;
|
||||||
ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
|
ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
|
||||||
select count(*) > -1 from i_tablespaces_encryption;
|
select count(*) > -1 from i_tablespaces_encryption;
|
||||||
ERROR 42000: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
|
ERROR 42000: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
|
||||||
select count(*) > -1 from d_tablespaces_encryption;
|
select count(*) > -1 from d_tablespaces_encryption;
|
||||||
count(*) > -1
|
count(*) > -1
|
||||||
1
|
1
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
#
|
#
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
[connection master]
|
||||||
|
connection master;
|
||||||
|
SET GLOBAL LOG_WARNINGS=2;
|
||||||
|
connection slave;
|
||||||
|
include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=current_pos;
|
||||||
|
include/start_slave.inc
|
||||||
|
connection master;
|
||||||
|
"Test Case 1: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(1), gtid('')"
|
||||||
|
FOUND 1 /using_gtid\(1\), gtid\(\'\'\)/ in mysqld.1.err
|
||||||
|
connection slave;
|
||||||
|
include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=no;
|
||||||
|
include/start_slave.inc
|
||||||
|
connection master;
|
||||||
|
"Test Case 2: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(0), gtid('')"
|
||||||
|
FOUND 1 /using_gtid\(0\), gtid\(\'\'\).*/ in mysqld.1.err
|
||||||
|
CREATE TABLE t (f INT) ENGINE=INNODB;
|
||||||
|
INSERT INTO t VALUES(10);
|
||||||
|
connection slave;
|
||||||
|
connection slave;
|
||||||
|
include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=slave_pos;
|
||||||
|
include/start_slave.inc
|
||||||
|
connection master;
|
||||||
|
"Test Case 3: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(1), gtid('0-1-2')"
|
||||||
|
FOUND 1 /using_gtid\(1\), gtid\(\'0-1-2\'\)/ in mysqld.1.err
|
||||||
|
SET @@SESSION.gtid_domain_id=10;
|
||||||
|
INSERT INTO t VALUES(20);
|
||||||
|
connection slave;
|
||||||
|
connection slave;
|
||||||
|
include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=slave_pos;
|
||||||
|
include/start_slave.inc
|
||||||
|
connection master;
|
||||||
|
"Test Case 4: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(1), gtid('0-1-2,10-1-1')"
|
||||||
|
FOUND 1 /using_gtid\(1\), gtid\(\'0-1-2,10-1-1\'\)/ in mysqld.1.err
|
||||||
|
"===== Clean up ====="
|
||||||
|
connection slave;
|
||||||
|
include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=no;
|
||||||
|
include/start_slave.inc
|
||||||
|
connection master;
|
||||||
|
DROP TABLE t;
|
||||||
|
SET GLOBAL LOG_WARNINGS=default;
|
||||||
|
include/rpl_end.inc
|
@ -0,0 +1,121 @@
|
|||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Test verifies that Start binlog_dump message will report GTID position
|
||||||
|
# requested by slave when log_warnings > 1.
|
||||||
|
#
|
||||||
|
# ==== Implementation ====
|
||||||
|
#
|
||||||
|
# Steps:
|
||||||
|
# 0 - Have LOG_WARNINGS=2
|
||||||
|
# 1 - On a fresh slave server which has not replicated any GTIDs execute
|
||||||
|
# "CHANGE MASTER TO MASTER_USE_GTID=current_pos;" command. Start the
|
||||||
|
# slave.
|
||||||
|
# 2 - In Master error log verify that pattern "using_gtid(1), gtid('')" is
|
||||||
|
# present.
|
||||||
|
# 3 - On slave server do STOP SLAVE and execute "CHANGE MASTER TO
|
||||||
|
# MASTER_USE_GTID=no;" command. Start the slave threads.
|
||||||
|
# 4 - In Master error log verify that pattern "using_gtid(0), gtid('')" is
|
||||||
|
# present.
|
||||||
|
# 5- Execute a DDL and DML on master server. This will generated two GTIDs
|
||||||
|
# on the master server ('0-1-2'). Sync the slave server with master.
|
||||||
|
# 6 - On slave do STOP SLAVE and execute "CHANGE MASTER TO
|
||||||
|
# MASTER_USE_GTID=slave_pos;" command. Start slave threads.
|
||||||
|
# 7 - In Master error verify that pattern "using_gtid(1), gtid('0-1-2')" is
|
||||||
|
# present.
|
||||||
|
# 8 - On Master change domain ID to 10 and execute a DML operation. It will
|
||||||
|
# generate a GTID 10-1-1.
|
||||||
|
# 9 - On slave do STOP SLAVE and execute "CHANGE MASTER TO
|
||||||
|
# MASTER_USE_GTID=slave_pos;" command. Start slave threads.
|
||||||
|
# 10 -In Master error verify that pattern "using_gtid(1),
|
||||||
|
# gtid('0-1-2,10-1-1')" is present.
|
||||||
|
#
|
||||||
|
# ==== References ====
|
||||||
|
#
|
||||||
|
# MDEV-20428: "Start binlog_dump" message doesn't indicate GTID position
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/have_binlog_format_mixed.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/master-slave.inc
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
SET GLOBAL LOG_WARNINGS=2;
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--source include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=current_pos;
|
||||||
|
--source include/start_slave.inc
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
# Check error log for correct messages.
|
||||||
|
let $log_error_= `SELECT @@GLOBAL.log_error`;
|
||||||
|
if(!$log_error_)
|
||||||
|
{
|
||||||
|
# MySQL Server on windows is started with --console and thus
|
||||||
|
# does not know the location of its .err log, use default location
|
||||||
|
let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||||
|
}
|
||||||
|
--echo "Test Case 1: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(1), gtid('')"
|
||||||
|
--let SEARCH_FILE=$log_error_
|
||||||
|
--let SEARCH_RANGE=-50000
|
||||||
|
--let SEARCH_PATTERN=using_gtid\(1\), gtid\(\'\'\)
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--source include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=no;
|
||||||
|
--source include/start_slave.inc
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
--echo "Test Case 2: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(0), gtid('')"
|
||||||
|
--let SEARCH_FILE=$log_error_
|
||||||
|
--let SEARCH_RANGE=-50000
|
||||||
|
--let SEARCH_PATTERN=using_gtid\(0\), gtid\(\'\'\).*
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
CREATE TABLE t (f INT) ENGINE=INNODB;
|
||||||
|
INSERT INTO t VALUES(10);
|
||||||
|
save_master_pos;
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
sync_with_master;
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--source include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=slave_pos;
|
||||||
|
--source include/start_slave.inc
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
--echo "Test Case 3: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(1), gtid('0-1-2')"
|
||||||
|
--let SEARCH_FILE=$log_error_
|
||||||
|
--let SEARCH_RANGE=-50000
|
||||||
|
--let SEARCH_PATTERN=using_gtid\(1\), gtid\(\'0-1-2\'\)
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
SET @@SESSION.gtid_domain_id=10;
|
||||||
|
INSERT INTO t VALUES(20);
|
||||||
|
save_master_pos;
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
sync_with_master;
|
||||||
|
|
||||||
|
--connection slave
|
||||||
|
--source include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=slave_pos;
|
||||||
|
--source include/start_slave.inc
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
--echo "Test Case 4: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(1), gtid('0-1-2,10-1-1')"
|
||||||
|
--let SEARCH_FILE=$log_error_
|
||||||
|
--let SEARCH_RANGE=-50000
|
||||||
|
--let SEARCH_PATTERN=using_gtid\(1\), gtid\(\'0-1-2,10-1-1\'\)
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
|
--echo "===== Clean up ====="
|
||||||
|
--connection slave
|
||||||
|
--source include/stop_slave.inc
|
||||||
|
CHANGE MASTER TO MASTER_USE_GTID=no;
|
||||||
|
--source include/start_slave.inc
|
||||||
|
|
||||||
|
--connection master
|
||||||
|
DROP TABLE t;
|
||||||
|
SET GLOBAL LOG_WARNINGS=default;
|
||||||
|
--source include/rpl_end.inc
|
@ -1894,3 +1894,15 @@ SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (t
|
|||||||
SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name='tt1' AND column_name='c1') OR (table_name='tt2' AND column_name='c2');
|
SELECT count(*) FROM information_schema.columns WHERE table_schema='test' AND (table_name='tt1' AND column_name='c1') OR (table_name='tt2' AND column_name='c2');
|
||||||
SELECT column_name FROM information_schema.columns WHERE (table_name, column_name) IN (('tt1','c1'),('tt2', 'c2')) ORDER BY column_name;
|
SELECT column_name FROM information_schema.columns WHERE (table_name, column_name) IN (('tt1','c1'),('tt2', 'c2')) ORDER BY column_name;
|
||||||
DROP TABLE tt1, tt2;
|
DROP TABLE tt1, tt2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-13242 Wrong results for queries with row constructors and information_schema
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SELECT SCHEMA_NAME from information_schema.schemata where schema_name='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
|
||||||
|
SELECT SCHEMA_NAME from information_schema.schemata where schema_name=REPEAT('a',193);
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.1 tests
|
||||||
|
--echo #
|
||||||
|
42
mysql-test/t/nested_profiling.test
Normal file
42
mysql-test/t/nested_profiling.test
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Test verifies that "init_connect" and "init_slave" system variables work
|
||||||
|
# fine when "profiling=on".
|
||||||
|
#
|
||||||
|
# ==== Implementation ====
|
||||||
|
#
|
||||||
|
# Steps:
|
||||||
|
# 0 - Create regular user without super privilege so that "init_connect"
|
||||||
|
# variable is effective.
|
||||||
|
# 1 - Enable profiling.
|
||||||
|
# 2 - Start a new connection which will try to execute the statements
|
||||||
|
# specified in "init_connect". No assert should be reported.
|
||||||
|
# 3 - Execute SHOW PROFILES to verify that statements specified in
|
||||||
|
# "init_connect" are displayed as part of profiling.
|
||||||
|
#
|
||||||
|
# ==== References ====
|
||||||
|
#
|
||||||
|
# MDEV-22706: Assertion `!current' failed in PROFILING::start_new_query
|
||||||
|
#
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_profiling.inc
|
||||||
|
|
||||||
|
SET @saved_profiling=@@GLOBAL.profiling;
|
||||||
|
SET @saved_init_connect=@@GLOBAL.init_connect;
|
||||||
|
SET GLOBAL init_connect="set @a=2;set @b=3";
|
||||||
|
SET GLOBAL profiling=on;
|
||||||
|
|
||||||
|
create user mysqltest1@localhost;
|
||||||
|
connect (con1,localhost,mysqltest1,,);
|
||||||
|
connection con1;
|
||||||
|
SELECT @a, @b;
|
||||||
|
--replace_column 2 #
|
||||||
|
SHOW PROFILES;
|
||||||
|
|
||||||
|
#========== Clean up ===========
|
||||||
|
connection default;
|
||||||
|
disconnect con1;
|
||||||
|
DROP USER mysqltest1@localhost;
|
||||||
|
|
||||||
|
SET GLOBAL profiling=@saved_profiling;
|
||||||
|
SET GLOBAL init_connect=@saved_init_connect;
|
@ -2102,6 +2102,19 @@ eval EXPLAIN EXTENDED $query;
|
|||||||
eval $query;
|
eval $query;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-17606: Query returns wrong results (while using CHARACTER SET utf8)
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(l1 varchar(10), i2 int);
|
||||||
|
INSERT INTO t1 VALUES ('e',2),('o',6),('x',4);
|
||||||
|
CREATE TABLE t2 (v1 varchar(10) CHARACTER SET utf8, KEY v1 (v1(3)));
|
||||||
|
INSERT INTO t2 VALUES ('k'),('rid'),('f'),('x');
|
||||||
|
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM t1 where ( t1.l1 < ANY (SELECT MAX(t2.v1) FROM t2));
|
||||||
|
SELECT * FROM t1 where ( t1.l1 < ANY (SELECT MAX(t2.v1) FROM t2));
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
--echo # MDEV-22852: SIGSEGV in sortlength (optimized builds)
|
||||||
--echo #
|
--echo #
|
||||||
@ -2113,3 +2126,5 @@ INSERT INTO t1 VALUES (0,0),(0,0);
|
|||||||
SELECT (SELECT DISTINCT t1i.b FROM t1 t1i GROUP BY t1i.a ORDER BY MAX(t1o.b)) FROM t1 AS t1o;
|
SELECT (SELECT DISTINCT t1i.b FROM t1 t1i GROUP BY t1i.a ORDER BY MAX(t1o.b)) FROM t1 AS t1o;
|
||||||
SET @@optimizer_switch= @save_optimizer_switch;
|
SET @@optimizer_switch= @save_optimizer_switch;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo # End of 10.2 tests
|
||||||
|
@ -21,9 +21,9 @@ ELSE()
|
|||||||
SET(CMAKE_REQUIRED_INCLUDES ${GSSAPI_INCS})
|
SET(CMAKE_REQUIRED_INCLUDES ${GSSAPI_INCS})
|
||||||
SET(CMAKE_REQUIRED_LIBRARIES ${GSSAPI_LIBS})
|
SET(CMAKE_REQUIRED_LIBRARIES ${GSSAPI_LIBS})
|
||||||
INCLUDE(CheckCXXSymbolExists)
|
INCLUDE(CheckCXXSymbolExists)
|
||||||
CHECK_CXX_SYMBOL_EXISTS(krb5_free_unparsed_name "krb5.h" HAVE_KRB5_FREE_UNPARSED_NAME)
|
CHECK_CXX_SYMBOL_EXISTS(krb5_xfree "krb5.h" HAVE_KRB5_XFREE)
|
||||||
IF(HAVE_KRB5_FREE_UNPARSED_NAME)
|
IF(HAVE_KRB5_XFREE)
|
||||||
ADD_DEFINITIONS(-DHAVE_KRB5_FREE_UNPARSED_NAME=1)
|
ADD_DEFINITIONS(-DHAVE_KRB5_XFREE=1)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
ELSE()
|
ELSE()
|
||||||
|
@ -31,7 +31,7 @@ static void log_error( OM_uint32 major, OM_uint32 minor, const char *msg)
|
|||||||
Generate default principal service name formatted as principal name "mariadb/server.fqdn@REALM"
|
Generate default principal service name formatted as principal name "mariadb/server.fqdn@REALM"
|
||||||
*/
|
*/
|
||||||
#include <krb5.h>
|
#include <krb5.h>
|
||||||
#ifndef HAVE_KRB5_FREE_UNPARSED_NAME
|
#ifdef HAVE_KRB5_XFREE
|
||||||
#define krb5_free_unparsed_name(a,b) krb5_xfree(b)
|
#define krb5_free_unparsed_name(a,b) krb5_xfree(b)
|
||||||
#endif
|
#endif
|
||||||
static char* get_default_principal_name()
|
static char* get_default_principal_name()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=8:ai:ts=8
|
# vim:sw=8:ai:ts=8
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
package Net::HandlerSocket::HSPool;
|
package Net::HandlerSocket::HSPool;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
# vim:sw=2:ai
|
# vim:sw=2:ai
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl -i
|
#!/usr/bin/env perl -i
|
||||||
#
|
#
|
||||||
# This script converts all numbers that look like addresses or memory sizes,
|
# This script converts all numbers that look like addresses or memory sizes,
|
||||||
# in a debug files generated by --debug (like mysqld --debug-dbug), to #.
|
# in a debug files generated by --debug (like mysqld --debug-dbug), to #.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl -w
|
#!/usr/bin/env perl -w
|
||||||
#
|
#
|
||||||
# $Id: mytop,v 1.91 2012/01/18 16:49:12 mgrennan Exp $
|
# $Id: mytop,v 1.91 2012/01/18 16:49:12 mgrennan Exp $
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000-2003, 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000-2003, 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2001, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2001, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- perl -*-
|
# -*- perl -*-
|
||||||
# Copyright (c) 2000-2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000-2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
####
|
####
|
||||||
#### Hello ... this is a heavily hacked script by Luuk
|
#### Hello ... this is a heavily hacked script by Luuk
|
||||||
#### instead of printing the result it makes a nice gif
|
#### instead of printing the result it makes a nice gif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
############################################################################
|
############################################################################
|
||||||
# Stress test for MySQL/InnoDB combined database
|
# Stress test for MySQL/InnoDB combined database
|
||||||
# (c) 2002 Innobase Oy & MySQL AB
|
# (c) 2002 Innobase Oy & MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
############################################################################
|
############################################################################
|
||||||
# Stress test for MySQL/InnoDB combined database
|
# Stress test for MySQL/InnoDB combined database
|
||||||
# (c) 2002 Innobase Oy & MySQL AB
|
# (c) 2002 Innobase Oy & MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
############################################################################
|
############################################################################
|
||||||
# Stress test for MySQL/InnoDB combined database
|
# Stress test for MySQL/InnoDB combined database
|
||||||
# (c) 2002 Innobase Oy & MySQL AB
|
# (c) 2002 Innobase Oy & MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
############################################################################
|
############################################################################
|
||||||
# Stress test for MySQL/InnoDB combined database
|
# Stress test for MySQL/InnoDB combined database
|
||||||
# (c) 2002 Innobase Oy & MySQL AB
|
# (c) 2002 Innobase Oy & MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
############################################################################
|
############################################################################
|
||||||
# Stress test for MySQL/Innobase combined database
|
# Stress test for MySQL/Innobase combined database
|
||||||
# (c) 2000 Innobase Oy & MySQL AB
|
# (c) 2000 Innobase Oy & MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
############################################################################
|
############################################################################
|
||||||
# Stress test for MySQL/Innobase combined database
|
# Stress test for MySQL/Innobase combined database
|
||||||
# (c) 2000 Innobase Oy & MySQL AB
|
# (c) 2000 Innobase Oy & MySQL AB
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2001, 2003, 2006, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2001, 2003, 2006, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# -*- perl -*-
|
# -*- perl -*-
|
||||||
# Copyright (c) 2000-2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000-2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000-2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000-2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000-2003, 2006, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000-2003, 2006, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Test of table elimination feature
|
# Test of table elimination feature
|
||||||
|
|
||||||
use Cwd;
|
use Cwd;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/env perl
|
||||||
# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||||
# Use is subject to license terms.
|
# Use is subject to license terms.
|
||||||
#
|
#
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user