1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-29 00:08:14 +03:00
Files
mariadb/mysql-test/suite/rpl/t/rpl_row_colSize.test
Sven Sandberg 09c80e12c5 BUG#49978: Replication tests don't clean up replication state at the end
Major replication test framework cleanup. This does the following:
 - Ensure that all tests clean up the replication state when they
   finish, by making check-testcase check the output of SHOW SLAVE STATUS.
   This implies:
    - Slave must not be running after test finished. This is good
      because it removes the risk for sporadic errors in subsequent
      tests when a test forgets to sync correctly.
    - Slave SQL and IO errors must be cleared when test ends. This is
      good because we will notice if a test gets an unexpected error in
      the slave threads near the end.
    - We no longer have to clean up before a test starts.
 - Ensure that all tests that wait for an error in one of the slave
   threads waits for a specific error. It is no longer possible to
   source wait_for_slave_[sql|io]_to_stop.inc when there is an error
   in one of the slave threads. This is good because:
    - If a test expects an error but there is a bug that causes
      another error to happen, or if it stops the slave thread without
      an error, then we will notice.
    - When developing tests, wait_for_*_to_[start|stop].inc will fail
      immediately if there is an error in the relevant slave thread.
      Before this patch, we had to wait for the timeout.
 - Remove duplicated and repeated code for setting up unusual replication
   topologies. Now, there is a single file that is capable of setting
   up arbitrary topologies (include/rpl_init.inc, but
   include/master-slave.inc is still available for the most common
   topology). Tests can now end with include/rpl_end.inc, which will clean
   up correctly no matter what topology is used. The topology can be
   changed with include/rpl_change_topology.inc.
 - Improved debug information when tests fail. This includes:
    - debug info is printed on all servers configured by include/rpl_init.inc
    - User can set $rpl_debug=1, which makes auxiliary replication files
      print relevant debug info.
 - Improved documentation for all auxiliary replication files. Now they
   describe purpose, usage, parameters, and side effects.
 - Many small code cleanups:
    - Made have_innodb.inc output a sensible error message.
    - Moved contents of rpl000017-slave.sh into rpl000017.test
    - Added mysqltest variables that expose the current state of
      disable_warnings/enable_warnings and friends.
    - Too many to list here: see per-file comments for details.
2010-12-19 18:07:28 +01:00

170 lines
6.4 KiB
Plaintext

##################################################################
# rpl_colSize #
# #
# This test is designed to test the changes included in WL#3228. #
# The changes include the ability to replicate with the master #
# having columns that are smaller (shorter) than the slave. #
##################################################################
-- source include/master-slave.inc
-- source include/have_binlog_format_row.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
--echo **** Testing WL#3228 changes. ****
--echo *** Create "wider" table on slave ***
sync_slave_with_master;
#
# Check each column type to verify error 1532 fires (BUG#22086)
# This check covers only those fields that require additional
# metadata from the master to be replicated to the slave. These
# field types are:
# MYSQL_TYPE_NEWDECIMAL:
# MYSQL_TYPE_FLOAT:
# MYSQL_TYPE_BIT:
# MYSQL_TYPE_SET:
# MYSQL_TYPE_STRING:
# MYSQL_TYPE_ENUM:
# MYSQL_TYPE_VARCHAR:
# MYSQL_TYPE_BLOB:
#
# Test: Checking MYSQL_TYPE_NEWDECIMAL fields
#
--echo Checking MYSQL_TYPE_NEWDECIMAL fields
let $test_table_master = CREATE TABLE t1 (a DECIMAL(20, 10));
let $test_table_slave = CREATE TABLE t1 (a DECIMAL(5,2));
let $test_insert = INSERT INTO t1 VALUES (901251.90125);
source include/test_fieldsize.inc;
let $test_table_master = CREATE TABLE t1 (a DECIMAL(27, 18));
let $test_table_slave = CREATE TABLE t1 (a DECIMAL(27, 9));
let $test_insert = INSERT INTO t1 VALUES (901251.90125);
source include/test_fieldsize.inc;
let $test_table_master = CREATE TABLE t1 (a NUMERIC(20, 10));
let $test_table_slave = CREATE TABLE t1 (a NUMERIC(5,2));
let $test_insert = INSERT INTO t1 VALUES (901251.90125);
source include/test_fieldsize.inc;
#
# Test: Checking MYSQL_TYPE_FLOAT fields
#
--echo Checking MYSQL_TYPE_FLOAT fields
let $test_table_master = CREATE TABLE t1 (a FLOAT(47));
let $test_table_slave = CREATE TABLE t1 (a FLOAT(20));
let $test_insert = INSERT INTO t1 VALUES (901251.90125);
source include/test_fieldsize.inc;
#
# Test: Checking MYSQL_TYPE_BIT fields
#
--echo Checking MYSQL_TYPE_BIT fields
let $test_table_master = CREATE TABLE t1 (a BIT(64));
let $test_table_slave = CREATE TABLE t1 (a BIT(5));
let $test_insert = INSERT INTO t1 VALUES (B'10101');
source include/test_fieldsize.inc;
let $test_table_master = CREATE TABLE t1 (a BIT(12));
let $test_table_slave = CREATE TABLE t1 (a BIT(11));
let $test_insert = INSERT INTO t1 VALUES (B'10101');
source include/test_fieldsize.inc;
#
# Test: Checking MYSQL_TYPE_SET fields
#
--echo Checking MYSQL_TYPE_SET fields
let $test_table_master = CREATE TABLE t1 (a SET('1','2','3','4','5','6','7','8','9'));
let $test_table_slave = CREATE TABLE t1 (a SET('4'));
let $test_insert = INSERT INTO t1 VALUES ('4');
source include/test_fieldsize.inc;
#
# Test: Checking MYSQL_TYPE_STRING fields
#
--echo Checking MYSQL_TYPE_STRING fields
let $test_table_master = CREATE TABLE t1 (a CHAR(20));
let $test_table_slave = CREATE TABLE t1 (a CHAR(10));
let $test_insert = INSERT INTO t1 VALUES ('This is a test.');
source include/test_fieldsize.inc;
#
# Test: Checking MYSQL_TYPE_ENUM fields
#
--echo Checking MYSQL_TYPE_ENUM fields
let $test_table_master = CREATE TABLE t1 (a ENUM(
'01','02','03','04','05','06','07','08','09',
'11','12','13','14','15','16','17','18','19',
'21','22','23','24','25','26','27','28','29',
'31','32','33','34','35','36','37','38','39',
'41','42','43','44','45','46','47','48','49',
'51','52','53','54','55','56','57','58','59',
'61','62','63','64','65','66','67','68','69',
'71','72','73','74','75','76','77','78','79',
'81','82','83','84','85','86','87','88','89',
'91','92','93','94','95','96','97','98','99',
'101','102','103','104','105','106','107','108','109',
'111','112','113','114','115','116','117','118','119',
'121','122','123','124','125','126','127','128','129',
'131','132','133','134','135','136','137','138','139',
'141','142','143','144','145','146','147','148','149',
'151','152','153','154','155','156','157','158','159',
'161','162','163','164','165','166','167','168','169',
'171','172','173','174','175','176','177','178','179',
'181','182','183','184','185','186','187','188','189',
'191','192','193','194','195','196','197','198','199',
'201','202','203','204','205','206','207','208','209',
'211','212','213','214','215','216','217','218','219',
'221','222','223','224','225','226','227','228','229',
'231','232','233','234','235','236','237','238','239',
'241','242','243','244','245','246','247','248','249',
'251','252','253','254','255','256','257','258','259',
'261','262','263','264','265','266','267','268','269',
'271','272','273','274','275','276','277','278','279',
'281','282','283','284','285','286','287','288','289',
'291','292','293','294','295','296','297','298','299'
));
let $test_table_slave = CREATE TABLE t1 (a ENUM('44','54'));
let $test_insert = INSERT INTO t1 VALUES ('44');
source include/test_fieldsize.inc;
#
# Test: Checking MYSQL_TYPE_VARCHAR fields
#
--echo Checking MYSQL_TYPE_VARCHAR fields
let $test_table_master = CREATE TABLE t1 (a VARCHAR(2000));
let $test_table_slave = CREATE TABLE t1 (a VARCHAR(100));
let $test_insert = INSERT INTO t1 VALUES ('This is a test.');
source include/test_fieldsize.inc;
let $test_table_master = CREATE TABLE t1 (a VARCHAR(200));
let $test_table_slave = CREATE TABLE t1 (a VARCHAR(10));
let $test_insert = INSERT INTO t1 VALUES ('This is a test.');
source include/test_fieldsize.inc;
let $test_table_master = CREATE TABLE t1 (a VARCHAR(2000));
let $test_table_slave = CREATE TABLE t1 (a VARCHAR(1000));
let $test_insert = INSERT INTO t1 VALUES ('This is a test.');
source include/test_fieldsize.inc;
#
# Test: Checking MYSQL_TYPE_BLOB fields
#
--echo Checking MYSQL_TYPE_BLOB fields
let $test_table_master = CREATE TABLE t1 (a LONGBLOB);
let $test_table_slave = CREATE TABLE t1 (a TINYBLOB);
let $test_insert = INSERT INTO t1 VALUES ('This is a test.');
source include/test_fieldsize.inc;
--echo *** Cleanup ***
connection master;
DROP TABLE IF EXISTS t1;
sync_slave_with_master;
# END 5.1 Test Case
--source include/rpl_end.inc