Skip to content

Commit

Permalink
MDEV-35693: Improve SHOW REPLICA STATUS column sizes
Browse files Browse the repository at this point in the history
Resize the types and widths of SHOW REPLICA STATUS
(technically `INFORMATION_SCHEMA.SLAVE_STATUS`)
columns to better match their possible values

In case of intentionally but absurdly long lists,
text columns that list an uncapped number of elements
have expanded to accept as many bytes as we could support.

Particularly, the first-gen `Replicate_` filters were
incorrectly typed as singlular `Name()`s during MDEV-33526.
Under `Name`s’ 64-char limit, they could overflow
(read: truncate) even before their lengths got absurd.

In response to `‘MAX_SLAVE_ERRMSG’ was not declared in this scope` in
Embedded builds, a new `#ifdef HAVE_REPLICATION` guard wraps
`slave_status_info` to skip this unused data in Replication-less builds.

For testing, this commit forward-ports a modified cherry-pick of #3795
(the latter targets our oldest maintained LTS as part of MDEV-35948).

> Assert that 1st-gen `replicate_*` filter variables display
> their input – including long but reasonable lists –
> correctly (without truncation) in
> * direct SELECT
> * [semi-new] INFORMATION_SCHEMA.GLOBAL_VARIABLES.VARIABLE_VALUE
> * [new] SHOW REPLICA STATUS

Reviewed-by: Brandon Nesterenko <brandon.nesterenko@mariadb.com>
  • Loading branch information
ParadoxV5 committed Jan 31, 2025
1 parent 01fafd4 commit df57577
Show file tree
Hide file tree
Showing 16 changed files with 294 additions and 94 deletions.
2 changes: 1 addition & 1 deletion mysql-test/main/information_schema.result
Original file line number Diff line number Diff line change
Expand Up @@ -1341,7 +1341,7 @@ table_schema='information_schema' and
group by column_type order by num;
column_type group_concat(table_schema, '.', table_name) num
varchar(7) information_schema.ROUTINES,information_schema.VIEWS,information_schema.SLAVE_STATUS 3
varchar(20) information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.FILES,information_schema.FILES,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PROFILING,information_schema.SLAVE_STATUS 10
varchar(20) information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.FILES,information_schema.FILES,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PROFILING 9
create table t1(f1 char(1) not null, f2 char(9) not null)
default character set utf8;
select CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH from
Expand Down
120 changes: 60 additions & 60 deletions mysql-test/suite/funcs_1/r/is_columns_is.result

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/r/replicate_do_db_basic.result
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
#
# Basic testing of replicate_do_db.
#
Expand All @@ -17,6 +18,20 @@ SET @@GLOBAL.replicate_do_db=1.1;
ERROR 42000: Incorrect argument type to variable 'replicate_do_db'
SET @@GLOBAL.replicate_do_db=1e1;
ERROR 42000: Incorrect argument type to variable 'replicate_do_db'
# Argument size acceptance.
SELECT GROUP_CONCAT(CONCAT("database_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
LENGTH(@name)
127
SET @@GLOBAL.replicate_do_db= @name;
SELECT @@GLOBAL.replicate_do_db;
@@GLOBAL.replicate_do_db
database_name_1,database_name_2,database_name_3,database_name_4,database_name_5,database_name_6,database_name_7,database_name_8
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_db';
VARIABLE_VALUE
database_name_1,database_name_2,database_name_3,database_name_4,database_name_5,database_name_6,database_name_7,database_name_8
Replicate_Do_DB = 'database_name_1,database_name_2,database_name_3,database_name_4,database_name_5,database_name_6,database_name_7,database_name_8'
# Argument syntax.
SET @@GLOBAL.replicate_do_db="db1,,,,,db3";
SELECT @@GLOBAL.replicate_do_db;
Expand All @@ -25,6 +40,7 @@ db1,db3
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_db';
VARIABLE_NAME VARIABLE_VALUE
REPLICATE_DO_DB db1,db3
Replicate_Do_DB = 'db1,db3'
SET @@GLOBAL.replicate_do_db="db1,,,db2,,,db3";
SELECT @@GLOBAL.replicate_do_db;
@@GLOBAL.replicate_do_db
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/r/replicate_do_table_basic.result
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
#
# Basic testing of replicate_do_table.
#
Expand All @@ -24,6 +25,20 @@ SET @@GLOBAL.replicate_do_table="test.t1, t2";
ERROR HY000: Incorrect arguments to SET
SET @@GLOBAL.replicate_do_table="test.,t1";
ERROR HY000: Incorrect arguments to SET
# Argument size acceptance.
SELECT GROUP_CONCAT(CONCAT("database_name.long_table_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
LENGTH(@name)
255
SET @@GLOBAL.replicate_do_table= @name;
SELECT @@GLOBAL.replicate_do_table;
@@GLOBAL.replicate_do_table
database_name.long_table_name_5,database_name.long_table_name_1,database_name.long_table_name_6,database_name.long_table_name_2,database_name.long_table_name_7,database_name.long_table_name_3,database_name.long_table_name_8,database_name.long_table_name_4
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_table';
VARIABLE_VALUE
database_name.long_table_name_5,database_name.long_table_name_1,database_name.long_table_name_6,database_name.long_table_name_2,database_name.long_table_name_7,database_name.long_table_name_3,database_name.long_table_name_8,database_name.long_table_name_4
Replicate_Do_Table = 'database_name.long_table_name_5,database_name.long_table_name_1,database_name.long_table_name_6,database_name.long_table_name_2,database_name.long_table_name_7,database_name.long_table_name_3,database_name.long_table_name_8,database_name.long_table_name_4'
# Argument syntax.
SET @@GLOBAL.replicate_do_table="test.t1,,,,,test.t3";
SELECT @@GLOBAL.replicate_do_table;
Expand All @@ -32,6 +47,7 @@ test.t3,test.t1
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_table';
VARIABLE_NAME VARIABLE_VALUE
REPLICATE_DO_TABLE test.t3,test.t1
Replicate_Do_Table = 'test.t3,test.t1'
SET @@GLOBAL.replicate_do_table="test.t1,,,test2.t2,,,test.t3";
SELECT @@GLOBAL.replicate_do_table;
@@GLOBAL.replicate_do_table
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/r/replicate_ignore_db_basic.result
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
#
# Basic testing of replicate_ignore_db.
#
Expand All @@ -17,6 +18,20 @@ SET @@GLOBAL.replicate_ignore_db=1.1;
ERROR 42000: Incorrect argument type to variable 'replicate_ignore_db'
SET @@GLOBAL.replicate_ignore_db=1e1;
ERROR 42000: Incorrect argument type to variable 'replicate_ignore_db'
# Argument size acceptance.
SELECT GROUP_CONCAT(CONCAT("database_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
LENGTH(@name)
127
SET @@GLOBAL.replicate_ignore_db= @name;
SELECT @@GLOBAL.replicate_ignore_db;
@@GLOBAL.replicate_ignore_db
database_name_1,database_name_2,database_name_3,database_name_4,database_name_5,database_name_6,database_name_7,database_name_8
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_db';
VARIABLE_VALUE
database_name_1,database_name_2,database_name_3,database_name_4,database_name_5,database_name_6,database_name_7,database_name_8
Replicate_Ignore_DB = 'database_name_1,database_name_2,database_name_3,database_name_4,database_name_5,database_name_6,database_name_7,database_name_8'
# Argument syntax.
SET @@GLOBAL.replicate_ignore_db="db1,,,,,db3";
SELECT @@GLOBAL.replicate_ignore_db;
Expand All @@ -25,6 +40,7 @@ db1,db3
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_db';
VARIABLE_NAME VARIABLE_VALUE
REPLICATE_IGNORE_DB db1,db3
Replicate_Ignore_DB = 'db1,db3'
SET @@GLOBAL.replicate_ignore_db="db1,,,db2,,,db3";
SELECT @@GLOBAL.replicate_ignore_db;
@@GLOBAL.replicate_ignore_db
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/r/replicate_ignore_table_basic.result
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
#
# Basic testing of replicate_ignore_table.
#
Expand All @@ -24,6 +25,20 @@ SET @@GLOBAL.replicate_ignore_table="test.t1, t2";
ERROR HY000: Incorrect arguments to SET
SET @@GLOBAL.replicate_ignore_table="test.,t1";
ERROR HY000: Incorrect arguments to SET
# Argument size acceptance.
SELECT GROUP_CONCAT(CONCAT("database_name.long_table_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
LENGTH(@name)
255
SET @@GLOBAL.replicate_ignore_table= @name;
SELECT @@GLOBAL.replicate_ignore_table;
@@GLOBAL.replicate_ignore_table
database_name.long_table_name_5,database_name.long_table_name_1,database_name.long_table_name_6,database_name.long_table_name_2,database_name.long_table_name_7,database_name.long_table_name_3,database_name.long_table_name_8,database_name.long_table_name_4
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_table';
VARIABLE_VALUE
database_name.long_table_name_5,database_name.long_table_name_1,database_name.long_table_name_6,database_name.long_table_name_2,database_name.long_table_name_7,database_name.long_table_name_3,database_name.long_table_name_8,database_name.long_table_name_4
Replicate_Ignore_Table = 'database_name.long_table_name_5,database_name.long_table_name_1,database_name.long_table_name_6,database_name.long_table_name_2,database_name.long_table_name_7,database_name.long_table_name_3,database_name.long_table_name_8,database_name.long_table_name_4'
# Argument syntax.
SET @@GLOBAL.replicate_ignore_table="test.t1,,,,,test.t3";
SELECT @@GLOBAL.replicate_ignore_table;
Expand All @@ -32,6 +47,7 @@ test.t3,test.t1
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_table';
VARIABLE_NAME VARIABLE_VALUE
REPLICATE_IGNORE_TABLE test.t3,test.t1
Replicate_Ignore_Table = 'test.t3,test.t1'
SET @@GLOBAL.replicate_ignore_table="test.t1,,,test2.t2,,,test.t3";
SELECT @@GLOBAL.replicate_ignore_table;
@@GLOBAL.replicate_ignore_table
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/r/replicate_wild_do_table_basic.result
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
#
# Basic testing of replicate_wild_do_table.
#
Expand All @@ -24,6 +25,20 @@ SET @@GLOBAL.replicate_wild_do_table="test.t, t2";
ERROR HY000: Incorrect arguments to SET
SET @@GLOBAL.replicate_wild_do_table="test.,t1";
ERROR HY000: Incorrect arguments to SET
# Argument size acceptance.
SELECT GROUP_CONCAT(CONCAT("database_name.long_table_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
LENGTH(@name)
255
SET @@GLOBAL.replicate_wild_do_table= @name;
SELECT @@GLOBAL.replicate_wild_do_table;
@@GLOBAL.replicate_wild_do_table
database_name.long_table_name_1,database_name.long_table_name_2,database_name.long_table_name_3,database_name.long_table_name_4,database_name.long_table_name_5,database_name.long_table_name_6,database_name.long_table_name_7,database_name.long_table_name_8
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_wild_do_table';
VARIABLE_VALUE
database_name.long_table_name_1,database_name.long_table_name_2,database_name.long_table_name_3,database_name.long_table_name_4,database_name.long_table_name_5,database_name.long_table_name_6,database_name.long_table_name_7,database_name.long_table_name_8
Replicate_Wild_Do_Table = 'database_name.long_table_name_1,database_name.long_table_name_2,database_name.long_table_name_3,database_name.long_table_name_4,database_name.long_table_name_5,database_name.long_table_name_6,database_name.long_table_name_7,database_name.long_table_name_8'
# Argument syntax.
SET @@GLOBAL.replicate_wild_do_table="test.%,,,,,test.t3";
SELECT @@GLOBAL.replicate_wild_do_table;
Expand All @@ -32,6 +47,7 @@ test.%,test.t3
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_wild_do_table';
VARIABLE_NAME VARIABLE_VALUE
REPLICATE_WILD_DO_TABLE test.%,test.t3
Replicate_Wild_Do_Table = 'test.%,test.t3'
SET @@GLOBAL.replicate_wild_do_table="test.t1,,,test2.%,,,test.t3";
SELECT @@GLOBAL.replicate_wild_do_table;
@@GLOBAL.replicate_wild_do_table
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
#
# Basic testing of replicate_wild_ignore_table.
#
Expand All @@ -24,6 +25,20 @@ SET @@GLOBAL.replicate_wild_ignore_table="test.t, t2";
ERROR HY000: Incorrect arguments to SET
SET @@GLOBAL.replicate_wild_ignore_table="test.,t1";
ERROR HY000: Incorrect arguments to SET
# Argument size acceptance.
SELECT GROUP_CONCAT(CONCAT("database_name.long_table_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
LENGTH(@name)
255
SET @@GLOBAL.replicate_wild_ignore_table= @name;
SELECT @@GLOBAL.replicate_wild_ignore_table;
@@GLOBAL.replicate_wild_ignore_table
database_name.long_table_name_1,database_name.long_table_name_2,database_name.long_table_name_3,database_name.long_table_name_4,database_name.long_table_name_5,database_name.long_table_name_6,database_name.long_table_name_7,database_name.long_table_name_8
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_wild_ignore_table';
VARIABLE_VALUE
database_name.long_table_name_1,database_name.long_table_name_2,database_name.long_table_name_3,database_name.long_table_name_4,database_name.long_table_name_5,database_name.long_table_name_6,database_name.long_table_name_7,database_name.long_table_name_8
Replicate_Wild_Ignore_Table = 'database_name.long_table_name_1,database_name.long_table_name_2,database_name.long_table_name_3,database_name.long_table_name_4,database_name.long_table_name_5,database_name.long_table_name_6,database_name.long_table_name_7,database_name.long_table_name_8'
# Argument syntax.
SET @@GLOBAL.replicate_wild_ignore_table="test.%,,,,,test.t3";
SELECT @@GLOBAL.replicate_wild_ignore_table;
Expand All @@ -32,6 +47,7 @@ test.%,test.t3
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_wild_ignore_table';
VARIABLE_NAME VARIABLE_VALUE
REPLICATE_WILD_IGNORE_TABLE test.%,test.t3
Replicate_Wild_Ignore_Table = 'test.%,test.t3'
SET @@GLOBAL.replicate_wild_ignore_table="test.t1,,,test2.%,,,test.t3";
SELECT @@GLOBAL.replicate_wild_ignore_table;
@@GLOBAL.replicate_wild_ignore_table
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/t/replicate_do_db_basic.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
--source include/have_sequence.inc
# have show_slave_status
--source include/not_embedded.inc
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
--let $status_items= Replicate_Do_DB

--echo #
--echo # Basic testing of replicate_do_db.
Expand All @@ -23,11 +27,23 @@ SET @@GLOBAL.replicate_do_db=1.1;
--error ER_WRONG_TYPE_FOR_VAR
SET @@GLOBAL.replicate_do_db=1e1;

# MDEV-35693 Replicate_* fields of Show-Slave-Status display truncated
--echo # Argument size acceptance.

SELECT GROUP_CONCAT(CONCAT("database_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
SET @@GLOBAL.replicate_do_db= @name;
SELECT @@GLOBAL.replicate_do_db;
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_db';
--source include/show_slave_status.inc

--echo # Argument syntax.

SET @@GLOBAL.replicate_do_db="db1,,,,,db3";
SELECT @@GLOBAL.replicate_do_db;
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_db';
--source include/show_slave_status.inc

SET @@GLOBAL.replicate_do_db="db1,,,db2,,,db3";
SELECT @@GLOBAL.replicate_do_db;
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/t/replicate_do_table_basic.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
--source include/have_sequence.inc
# have show_slave_status
--source include/not_embedded.inc
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
--let $status_items= Replicate_Do_Table

--echo #
--echo # Basic testing of replicate_do_table.
Expand Down Expand Up @@ -32,11 +36,23 @@ SET @@GLOBAL.replicate_do_table="test.t1, t2";
--error ER_WRONG_ARGUMENTS
SET @@GLOBAL.replicate_do_table="test.,t1";

# MDEV-35693 Replicate_* fields of Show-Slave-Status display truncated
--echo # Argument size acceptance.

SELECT GROUP_CONCAT(CONCAT("database_name.long_table_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
SET @@GLOBAL.replicate_do_table= @name;
SELECT @@GLOBAL.replicate_do_table;
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_table';
--source include/show_slave_status.inc

--echo # Argument syntax.

SET @@GLOBAL.replicate_do_table="test.t1,,,,,test.t3";
SELECT @@GLOBAL.replicate_do_table;
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_do_table';
--source include/show_slave_status.inc

SET @@GLOBAL.replicate_do_table="test.t1,,,test2.t2,,,test.t3";
SELECT @@GLOBAL.replicate_do_table;
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/t/replicate_ignore_db_basic.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
--source include/have_sequence.inc
# have show_slave_status
--source include/not_embedded.inc
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
--let $status_items= Replicate_Ignore_DB

--echo #
--echo # Basic testing of replicate_ignore_db.
Expand All @@ -23,11 +27,23 @@ SET @@GLOBAL.replicate_ignore_db=1.1;
--error ER_WRONG_TYPE_FOR_VAR
SET @@GLOBAL.replicate_ignore_db=1e1;

# MDEV-35693 Replicate_* fields of Show-Slave-Status display truncated
--echo # Argument size acceptance.

SELECT GROUP_CONCAT(CONCAT("database_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
SET @@GLOBAL.replicate_ignore_db= @name;
SELECT @@GLOBAL.replicate_ignore_db;
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_db';
--source include/show_slave_status.inc

--echo # Argument syntax.

SET @@GLOBAL.replicate_ignore_db="db1,,,,,db3";
SELECT @@GLOBAL.replicate_ignore_db;
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_db';
--source include/show_slave_status.inc

SET @@GLOBAL.replicate_ignore_db="db1,,,db2,,,db3";
SELECT @@GLOBAL.replicate_ignore_db;
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/t/replicate_ignore_table_basic.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
--source include/have_sequence.inc
# have show_slave_status
--source include/not_embedded.inc
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
--let $status_items= Replicate_Ignore_Table

--echo #
--echo # Basic testing of replicate_ignore_table.
Expand Down Expand Up @@ -32,11 +36,23 @@ SET @@GLOBAL.replicate_ignore_table="test.t1, t2";
--error ER_WRONG_ARGUMENTS
SET @@GLOBAL.replicate_ignore_table="test.,t1";

# MDEV-35693 Replicate_* fields of Show-Slave-Status display truncated
--echo # Argument size acceptance.

SELECT GROUP_CONCAT(CONCAT("database_name.long_table_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
SET @@GLOBAL.replicate_ignore_table= @name;
SELECT @@GLOBAL.replicate_ignore_table;
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_table';
--source include/show_slave_status.inc

--echo # Argument syntax.

SET @@GLOBAL.replicate_ignore_table="test.t1,,,,,test.t3";
SELECT @@GLOBAL.replicate_ignore_table;
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_ignore_table';
--source include/show_slave_status.inc

SET @@GLOBAL.replicate_ignore_table="test.t1,,,test2.t2,,,test.t3";
SELECT @@GLOBAL.replicate_ignore_table;
Expand Down
16 changes: 16 additions & 0 deletions mysql-test/suite/sys_vars/t/replicate_wild_do_table_basic.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
--source include/have_sequence.inc
# have show_slave_status
--source include/not_embedded.inc
CHANGE MASTER TO master_host='127.0.0.1', master_user='root', master_ssl_verify_server_cert=0;
--let $status_items= Replicate_Wild_Do_Table

--echo #
--echo # Basic testing of replicate_wild_do_table.
Expand Down Expand Up @@ -32,11 +36,23 @@ SET @@GLOBAL.replicate_wild_do_table="test.t, t2";
--error ER_WRONG_ARGUMENTS
SET @@GLOBAL.replicate_wild_do_table="test.,t1";

# MDEV-35693 Replicate_* fields of Show-Slave-Status display truncated
--echo # Argument size acceptance.

SELECT GROUP_CONCAT(CONCAT("database_name.long_table_name_", seq) SEPARATOR ",")
INTO @name FROM seq_1_to_8;
SELECT LENGTH(@name);
SET @@GLOBAL.replicate_wild_do_table= @name;
SELECT @@GLOBAL.replicate_wild_do_table;
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_wild_do_table';
--source include/show_slave_status.inc

--echo # Argument syntax.

SET @@GLOBAL.replicate_wild_do_table="test.%,,,,,test.t3";
SELECT @@GLOBAL.replicate_wild_do_table;
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='replicate_wild_do_table';
--source include/show_slave_status.inc

SET @@GLOBAL.replicate_wild_do_table="test.t1,,,test2.%,,,test.t3";
SELECT @@GLOBAL.replicate_wild_do_table;
Expand Down
Loading

0 comments on commit df57577

Please sign in to comment.