polardbxengine/mysql-test/suite/xengine_rpl_basic/t/rpl_functional_index.test

162 lines
4.5 KiB
Plaintext

--source include/have_debug.inc
--source include/master-slave.inc
--source include/have_grep.inc
--echo # Create a table with functional index
CREATE TABLE t1 (col1 INT, INDEX ((ABS(col1))));
INSERT INTO t1 VALUES (-12);
--echo # Show the hidden columns so we can see the computed value.
SET SESSION debug="+d,show_hidden_columns";
SELECT * FROM t1;
SET SESSION debug="-d,show_hidden_columns";
--echo # Sync slave with master, and verify that the table exists on the slave.
--source include/sync_slave_sql_with_master.inc
--echo # Show the hidden columns so we can see that the computed value is
--echo # reflected on the slave.
SET SESSION debug="+d,show_hidden_columns";
SELECT * FROM t1;
SET SESSION debug="-d,show_hidden_columns";
EXPLAIN SELECT col1 FROM t1 WHERE ABS(col1) = 12;
SET SESSION debug="+d,show_hidden_columns";
SHOW CREATE TABLE t1;
SET SESSION debug="-d,show_hidden_columns";
--connection master
DROP TABLE t1;
SET @start_row_image_value= @@session.binlog_row_image;
--echo # Try with various row_image values
SET @@session.binlog_row_image= MINIMAL;
CREATE TABLE t1 (col1 INT, INDEX ((ABS(col1))));
INSERT INTO t1 VALUES (-12);
--source include/sync_slave_sql_with_master.inc
--echo # Show the hidden columns so we can see that the computed value is
--echo # reflected on the slave.
SET SESSION debug="+d,show_hidden_columns";
SELECT * FROM t1;
EXPLAIN SELECT col1 FROM t1 WHERE ABS(col1) = 12;
SHOW CREATE TABLE t1;
SET SESSION debug="-d,show_hidden_columns";
--connection master
DROP TABLE t1;
SET @@session.binlog_row_image= noblob;
CREATE TABLE t1 (col1 INT, INDEX ((ABS(col1))));
INSERT INTO t1 VALUES (-12);
--source include/sync_slave_sql_with_master.inc
--echo # Show the hidden columns so we can see that the computed value is
--echo # reflected on the slave.
SET SESSION debug="+d,show_hidden_columns";
SELECT * FROM t1;
EXPLAIN SELECT col1 FROM t1 WHERE ABS(col1) = 12;
SHOW CREATE TABLE t1;
SET SESSION debug="-d,show_hidden_columns";
--connection master
DROP TABLE t1;
SET @@session.binlog_row_image= @start_row_image_value;
--echo #
--echo # Bug#28207118 UNIQUE FUNCTIONAL INDEX IS NOT CORRECTLY BEING CONSIDERED
--echo # ON SLAVE.
--echo #
CREATE TABLE t1 (col1 INT, UNIQUE INDEX idx ((col1 + col1)));
--source include/sync_slave_sql_with_master.inc
INSERT INTO t1 (col1) VALUES (1);
--connection master
call mtr.add_suppression("Slave SQL for channel '': .*Could not execute Write_rows event on table test.t1");
call mtr.add_suppression("Slave SQL for channel '': .*Error 'Duplicate entry '2'");
call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
INSERT INTO t1 (col1) VALUES (1), (2);
--connection slave
--let $slave_sql_errno = convert_error(ER_DUP_ENTRY)
--let $slave_timeout = 5
--source include/wait_for_slave_sql_error.inc
DELETE FROM t1;
START SLAVE;
--connection master
INSERT INTO t1 (col1) VALUES (3), (4);
SELECT col1 FROM t1;
--source include/sync_slave_sql_with_master.inc
SELECT col1 FROM t1;
--connection master
DROP TABLE t1;
--echo #
--echo # Bug#28218073 SLAVE CRASHES WHEN AN UPDATE ON SLAVE REFERS TO COLUMN
--echo # USED IN FUNCTIONAL INDEX.
--echo #
CREATE TABLE t(a INT, b INT, UNIQUE INDEX c ((a + b)));
INSERT INTO t VALUES (1, 2);
INSERT INTO t VALUES (2, 3);
INSERT INTO t VALUES (3, 4);
--source include/sync_slave_sql_with_master.inc
SELECT a, b FROM t;
--error ER_DUP_ENTRY
UPDATE t SET b = 5 WHERE b - a = 1;
SELECT a, b FROM t;
--connection master
DROP TABLE t;
--echo #
--echo # Bug#28218481 UPDATE TABLE ON SLAVE DOESN'T UPDATE WHEN FUNCTIONAL INDEX
--echo # MATCH EXPR IN WHERE.
--echo #
CREATE TABLE t (a INT, b INT, INDEX c ((a + b)));
INSERT INTO t VALUES (3, 5);
INSERT INTO t VALUES (1, 2);
INSERT INTO t VALUES (2, 7);
SELECT a, b FROM t;
UPDATE t SET a = 4 WHERE a + b = 3;
SELECT a, b FROM t;
--source include/sync_slave_sql_with_master.inc
SELECT a, b FROM t;
UPDATE t SET a = 9 WHERE a + b = 8;
SELECT a, b FROM t;
--connection master
DROP TABLE t;
--echo #
--echo # Bug#28243453 ASSERTION`MAP->BITMAP&&MAP2->BITMAP&&MAP->N_BITS==MAP2->
--echo # N_BITS' FAILED ON SLAVE
--echo #
CREATE TABLE t(a INT, b INT);
--source include/sync_slave_sql_with_master.inc
ALTER TABLE t ADD UNIQUE INDEX i ((a + b));
--connection master
INSERT INTO t VALUES (1, 2);
--source include/sync_slave_sql_with_master.inc
SELECT a, b FROM t;
--connection master
DROP TABLE t;
--source include/rpl_end.inc
--connection master
--source suite/xengine/include/check_xengine_log_error.inc