polardbxengine/mysql-test/suite/rpl/t/rpl_cast.test

99 lines
4.1 KiB
Plaintext

#####################################################################
# #
# The aim of this testcase is a sanity check to test the newly #
# added CAST functionalities in WL#529, in a replication set up, #
# to ensure that replication does not break due to any reason. #
# #
# Creation date: 2019-03-14 #
# Author: Deepa Dixit #
# #
#####################################################################
--source include/master-slave.inc
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
--echo # Create table with different datatypes
--connection master
CREATE TABLE wl529 (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, bt BLOB,
vt VARCHAR(25), tt TEXT, ft FLOAT, it INT, itu INT
UNSIGNED, jt JSON, dt DOUBLE, dc DECIMAL(16,8),
dat DATE, yt YEAR);
INSERT INTO wl529(bt, vt, tt, ft, it, itu, jt, dt, dc, dat, yt) VALUES
('string', '837498713.8472812', '8240921.0982421', 09385.82471, 1234, 12984, "3980921", 98453.8324732, 4824.89247, '2011-04-03', '2012'),
('varchar', '-494804.48724', '48744.84783', 1234.1223, -1234, 938432, "9218421", 384734.84732, 589239.948091, '2010-11-11', '2010'),
('text', '7848094.874821', '48973847.8743', 3875328.9824721, 3473, 3984013, "1", -8478.89247, -402984.8742, '1980-01-01', '1980'),
('blob', '908249214.8742', '7634109.9843040', -9824821.274921, -98347, 3814031, "8742.43", -384731.837438, -4824.89247, '1970-01-01', '1970'),
('json', '4827410.7404', '-87484.874897447', -4873284.98438, 5398432, 8549, "8392", -892472.8748931, 49852.53985, '2020-02-20', '2020');
CREATE TABLE wl529_insert (f1 FLOAT, f2 VARCHAR(15), f3 TEXT, f4 BLOB, f5 FLOAT,
f6 FLOAT, f7 DOUBLE, f8 DOUBLE, f9 DECIMAL(65,30),
f10 DECIMAL, f11 DECIMAL(16, 10));
INSERT INTO wl529_insert SELECT CAST(bt AS FLOAT), CAST(vt AS FLOAT), CAST(tt AS FLOAT), CAST(ft AS FLOAT), CAST(it AS FLOAT), CAST(itu AS FLOAT), CAST(jt AS FLOAT), CAST(dt AS FLOAT), CAST(dc AS FLOAT), CAST(dat AS FLOAT), CAST(yt AS FLOAT) FROM wl529;
INSERT INTO wl529_insert SELECT CAST(bt AS DOUBLE), CAST(vt AS DOUBLE), CAST(tt AS DOUBLE), CAST(ft AS DOUBLE), CAST(it AS DOUBLE), CAST(itu AS DOUBLE), CAST(jt AS DOUBLE), CAST(dt AS DOUBLE), CAST(dc AS DOUBLE), CAST(dat AS DOUBLE), CAST(yt AS DOUBLE) FROM wl529;
INSERT INTO wl529_insert SELECT CAST(bt AS REAL), CAST(vt AS REAL), CAST(tt AS REAL), CAST(ft AS REAL), CAST(it AS REAL), CAST(itu AS REAL), CAST(jt AS REAL), CAST(dt AS REAL), CAST(dc AS REAL), CAST(dat AS REAL), CAST(yt AS REAL) FROM wl529;
--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]
--echo # Check whether table was created and values were inserted on slave
SELECT * FROM wl529;
SELECT * FROM wl529_insert;
--let $diff_tables = master:wl529_insert, slave:wl529_insert
--source include/diff_tables.inc
--echo [Connection Master]
--connection master
--echo # Update values inside the table
UPDATE wl529 SET dt = CAST(vt AS DOUBLE) WHERE id = 2;
UPDATE wl529 SET dt = CAST(vt AS REAL) WHERE id = 3;
--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]
--echo # Check whether rows are updated
SELECT * FROM wl529 WHERE id < 4;
--let $diff_tables = master:wl529, slave:wl529
--source include/diff_tables.inc
--echo [Connection Master]
--connection master
DELETE FROM wl529 WHERE CAST(vt AS DOUBLE) = dt;
--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]
--echo # Check whether the rows are deleted
SELECT * FROM wl529;
--let $diff_tables = master:wl529, slave:wl529
--source include/diff_tables.inc
--echo [Connection Master]
--connection master
--echo # Drop tables and clean up
DROP TABLE wl529, wl529_insert;
--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]
--source include/rpl_end.inc