github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/gbk/run.sh (about) 1 #!/bin/bash 2 3 set -eu 4 5 cur=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 6 source $cur/../_utils/test_prepare 7 WORK_DIR=$TEST_DIR/$TEST_NAME 8 TASK_NAME="gbk" 9 10 function test_from_tidb() { 11 cleanup_data_upstream gbk3 12 13 # check table can inherited charset from database 14 run_sql_source1 "use gbk; create table ddl1(b char(20));" 15 run_sql_tidb_with_retry "show create table gbk.ddl1;" "CHARSET=gbk" 16 17 # can't test "create table as select", because it is not supported in GTID mode 18 19 # test create table like 20 run_sql_source1 "use gbk; create table ddl2(a char(20) charset gbk, b char(20) charset utf8mb4);" 21 run_sql_source1 "use gbk; create table ddl2_copy like ddl2; insert into ddl2_copy values('一二三', '一二三');" 22 run_sql_tidb_with_retry "select hex(a) from gbk.ddl2_copy;" "D2BBB6FEC8FD" 23 run_sql_tidb_with_retry "select hex(b) from gbk.ddl2_copy;" "E4B880E4BA8CE4B889" 24 25 # test create partition table 26 run_sql_source1 "use gbk; create table ddl3(id int, a char(20) charset gbk) partition by hash(id) partitions 4;" 27 run_sql_tidb_with_retry "show create table gbk.ddl3;" "CHARSET=gbk" 28 run_sql_tidb_with_retry "show create table gbk.ddl3;" "ARTITION BY HASH (\`id\`) PARTITIONS 4" 29 30 # test alter database charset 31 run_sql_source1 "create database gbk3 charset utf8; alter database gbk3 charset gbk;" 32 run_sql_tidb_with_retry "show create database gbk3;" "CHARACTER SET gbk" 33 34 # test client use GBK encoding 35 run_sql "create table gbk.ddl4 (c int primary key comment '你好');" $MYSQL_PORT1 $MYSQL_PASSWORD1 "gbk" 36 run_sql_tidb_with_retry "show create table gbk.ddl4;" "COMMENT '你好'" 37 } 38 39 function run() { 40 run_dm_master $WORK_DIR/master $MASTER_PORT $cur/conf/dm-master.toml 41 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT 42 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 43 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 44 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 45 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 46 47 # operate mysql config to worker 48 cp $cur/conf/source1.yaml $WORK_DIR/source1.yaml 49 cp $cur/conf/source2.yaml $WORK_DIR/source2.yaml 50 dmctl_operate_source create $WORK_DIR/source1.yaml $SOURCE_ID1 51 dmctl_operate_source create $WORK_DIR/source2.yaml $SOURCE_ID2 52 53 echo "prepare data" 54 run_sql_file $cur/data/db1.prepare.sql $MYSQL_HOST1 $MYSQL_PORT1 $MYSQL_PASSWORD1 55 run_sql_file $cur/data/db2.prepare.sql $MYSQL_HOST2 $MYSQL_PORT2 $MYSQL_PASSWORD2 56 57 echo "start task" 58 dmctl_start_task $cur/conf/dm-task.yaml "--remove-meta" 59 60 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 61 62 echo "prepare incremental data" 63 run_sql_file $cur/data/db1.increment.sql $MYSQL_HOST1 $MYSQL_PORT1 $MYSQL_PASSWORD1 64 run_sql_file $cur/data/db2.increment.sql $MYSQL_HOST2 $MYSQL_PORT2 $MYSQL_PASSWORD2 65 66 echo "check incremental phase" 67 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 68 69 test_from_tidb 70 71 echo "prepare data for invalid connection test" 72 run_sql_source1 "CREATE TABLE IF NOT EXISTS gbk.invalid_conn_test1(i TINYINT, j INT UNIQUE KEY, k TINYINT, m TINYINT, n TINYINT, h TINYINT)" 73 run_sql_source1 "CREATE TABLE IF NOT EXISTS gbk.invalid_conn_test2(i TINYINT, j INT UNIQUE KEY, k TINYINT, m TINYINT, n TINYINT, h TINYINT)" 74 check_log_contain_with_retry 'finish to handle ddls in normal mode.*CREATE TABLE IF NOT EXISTS gbk.invalid_conn_test2' $WORK_DIR/worker1/log/dm-worker.log $WORK_DIR/worker2/log/dm-worker.log 75 76 kill_dm_worker 77 78 # test invalid connection with status running 79 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/TestStatus=1*return(\"running\");github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 80 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 81 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 82 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 83 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 84 85 echo "start test invalid connection with status running" 86 87 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN j SMALLINT(4) NOT NULL DEFAULT _UTF8MB4'0'" 88 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test2 MODIFY COLUMN j SMALLINT(4) NOT NULL DEFAULT _UTF8MB4'0'" 89 90 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`j\` SMALLINT(4) NOT NULL DEFAULT '0'" 91 echo "check count" 92 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`j\` SMALLINT(4) NOT NULL DEFAULT '0'" 1 93 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 94 echo "check test invalid connection with status running successfully" 95 96 kill_dm_worker 97 98 # test invalid connection with status queueing 99 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/TestStatus=1*return(\"queueing\");github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 100 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 101 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 102 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 103 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 104 105 echo "start test invalid connection with status queueing" 106 107 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN m SMALLINT(4) NOT NULL DEFAULT _UTF8MB4'0'" 108 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test2 MODIFY COLUMN m SMALLINT(4) NOT NULL DEFAULT _UTF8MB4'0'" 109 110 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`m\` SMALLINT(4) NOT NULL DEFAULT '0'" 111 echo "check count" 112 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`m\` SMALLINT(4) NOT NULL DEFAULT '0'" 1 113 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 114 echo "check test invalid connection with status queueing successfully" 115 116 kill_dm_worker 117 118 # test invalid connection with status none 119 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/TestStatus=1*return(\"none\");github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 120 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 121 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 122 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 123 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 124 125 echo "start test invalid connection with status none" 126 127 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN n SMALLINT(4) NOT NULL DEFAULT _UTF8MB4'0'" 128 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test2 MODIFY COLUMN n SMALLINT(4) NOT NULL DEFAULT _UTF8MB4'0'" 129 130 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`n\` SMALLINT(4) NOT NULL DEFAULT '0'" 131 echo "check count" 132 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`n\` SMALLINT(4) NOT NULL DEFAULT '0'" 1 133 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 134 echo "check test invalid connection with status none successfully" 135 136 kill_dm_worker 137 138 # test inserting data after invalid connection 139 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 140 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 141 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 142 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 143 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 144 145 echo "start test inserting data after invalid connection" 146 147 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN h SMALLINT(4) NOT NULL DEFAULT _UTF8MB4'0'" 148 run_sql_source1 "INSERT INTO gbk.invalid_conn_test1 VALUES (1,1,1,1,1,1)" 149 run_sql_source1 "INSERT INTO gbk.invalid_conn_test1 VALUES (2,2,2,2,2,2)" 150 151 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`h\` SMALLINT(4) NOT NULL DEFAULT '0'" 152 echo "check count" 153 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`h\` SMALLINT(4) NOT NULL DEFAULT '0'" 1 154 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 155 echo "check test inserting data after invalid connection successfully" 156 157 kill_dm_worker 158 159 # test adding UNIQUE on column with duplicate data 160 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 161 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 162 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 163 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 164 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 165 166 echo "start test adding UNIQUE on column with duplicate data" 167 168 run_sql_source1 "INSERT INTO gbk.invalid_conn_test1 VALUES (3,3,3,3,3,3)" 169 run_sql_tidb "INSERT INTO gbk.invalid_conn_test1 VALUES (3,4,4,4,4,4)" 170 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 ADD UNIQUE(i)" 171 172 echo "check cancelled error" 173 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 174 "query-status gbk" \ 175 "origin SQL: \[ALTER TABLE gbk.invalid_conn_test1 ADD UNIQUE(i)\]: DDL ALTER TABLE \`gbk\`.\`invalid_conn_test1\` ADD UNIQUE(\`i\`) executed in background and met error" 1 176 # manually synchronize upstream and downstream 177 run_sql_tidb "DELETE FROM gbk.invalid_conn_test1 WHERE j=4" 178 # manually resume 179 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 180 "resume-task gbk" \ 181 "\"result\": true" 3 182 echo "check test adding UNIQUE on column with duplicate data successfully" 183 184 kill_dm_worker 185 186 # multi-schema change tests 187 # test invalid connection with status running (multi-schema change) 188 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/TestStatus=1*return(\"running\");github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 189 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 190 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 191 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 192 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 193 194 echo "start test invalid connection with status running (multi-schema change)" 195 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN i INT(4) NOT NULL DEFAULT _UTF8MB4'0', MODIFY COLUMN j INT(4) NOT NULL DEFAULT _UTF8MB4'0'" 196 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test2 MODIFY COLUMN i INT(4) NOT NULL DEFAULT _UTF8MB4'0', MODIFY COLUMN j INT(4) NOT NULL DEFAULT _UTF8MB4'0'" 197 198 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`i\` INT(4) NOT NULL DEFAULT '0'" 199 echo "check count 1" 200 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`i\` INT(4) NOT NULL DEFAULT '0'" 1 201 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`j\` INT(4) NOT NULL DEFAULT '0'" 202 echo "check count 2" 203 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`j\` INT(4) NOT NULL DEFAULT '0'" 1 204 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 205 echo "check test invalid connection with status running (multi-schema change) successfully" 206 207 kill_dm_worker 208 209 # test invalid connection with status queueing (multi-schema change) 210 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/TestStatus=1*return(\"queueing\");github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 211 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 212 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 213 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 214 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 215 216 echo "start test invalid connection with status queueing (multi-schema change)" 217 218 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN k INT(4) NOT NULL DEFAULT _UTF8MB4'0', MODIFY COLUMN m INT(4) NOT NULL DEFAULT _UTF8MB4'0'" 219 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test2 MODIFY COLUMN k INT(4) NOT NULL DEFAULT _UTF8MB4'0', MODIFY COLUMN m INT(4) NOT NULL DEFAULT _UTF8MB4'0'" 220 221 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`k\` INT(4) NOT NULL DEFAULT '0'" 222 echo "check count 1" 223 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`k\` INT(4) NOT NULL DEFAULT '0'" 1 224 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`m\` INT(4) NOT NULL DEFAULT '0'" 225 echo "check count 2" 226 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`m\` INT(4) NOT NULL DEFAULT '0'" 1 227 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 228 echo "check test invalid connection with status queueing (multi-schema change) successfully" 229 230 kill_dm_worker 231 232 # test invalid connection with status none (multi-schema change) 233 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/TestStatus=1*return(\"none\");github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 234 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 235 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 236 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 237 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 238 239 echo "start test invalid connection with status none (multi-schema change)" 240 241 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN n INT(4) NOT NULL DEFAULT _UTF8MB4'0', MODIFY COLUMN h INT(4) NOT NULL DEFAULT _UTF8MB4'0'" 242 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test2 MODIFY COLUMN n INT(4) NOT NULL DEFAULT _UTF8MB4'0', MODIFY COLUMN h INT(4) NOT NULL DEFAULT _UTF8MB4'0'" 243 244 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`n\` INT(4) NOT NULL DEFAULT '0'" 245 echo "check count 1" 246 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`n\` INT(4) NOT NULL DEFAULT '0'" 1 247 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`h\` INT(4) NOT NULL DEFAULT '0'" 248 echo "check count 2" 249 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`h\` INT(4) NOT NULL DEFAULT '0'" 1 250 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 251 echo "check test invalid connection with status none (multi-schema change) successfully" 252 253 kill_dm_worker 254 255 # test inserting data after invalid connection (multi-schema change) 256 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 257 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 258 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 259 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 260 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 261 262 echo "start test inserting data after invalid connection (multi-schema change)" 263 264 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 MODIFY COLUMN i TINYINT NOT NULL DEFAULT _UTF8MB4'0', MODIFY COLUMN j TINYINT NOT NULL DEFAULT _UTF8MB4'0'" 265 run_sql_source1 "INSERT INTO gbk.invalid_conn_test1 VALUES (5,5,5,5,5,5)" 266 run_sql_source1 "INSERT INTO gbk.invalid_conn_test1 VALUES (6,6,6,6,6,6)" 267 268 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`i\` TINYINT NOT NULL DEFAULT '0'" 269 echo "check count 1" 270 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`i\` TINYINT NOT NULL DEFAULT '0'" 1 271 run_sql_tidb_with_retry "ADMIN SHOW DDL JOB QUERIES LIMIT 10 OFFSET 0" "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`j\` TINYINT NOT NULL DEFAULT '0'" 272 echo "check count 2" 273 check_count "ALTER TABLE \`gbk\`.\`invalid_conn_test1\` MODIFY COLUMN \`j\` TINYINT NOT NULL DEFAULT '0'" 1 274 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 275 echo "check test inserting data after invalid connection (multi-schema change) successfully" 276 277 kill_dm_worker 278 279 # test adding UNIQUE on column with duplicate data (multi-schema change) 280 export GO_FAILPOINTS="github.com/pingcap/tiflow/dm/syncer/TestHandleSpecialDDLError=return();github.com/pingcap/tiflow/dm/syncer/ChangeDuration=return()" 281 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 282 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 283 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $cur/conf/dm-worker2.toml 284 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT 285 286 echo "start test adding UNIQUE on column with duplicate data (multi-schema change)" 287 288 run_sql_source1 "INSERT INTO gbk.invalid_conn_test1 VALUES (7,7,7,7,7,7)" 289 run_sql_tidb "INSERT INTO gbk.invalid_conn_test1 VALUES (8,8,7,7,8,8)" 290 run_sql_source1 "ALTER TABLE gbk.invalid_conn_test1 ADD UNIQUE(k), ADD UNIQUE(m)" 291 292 echo "check cancelled error" 293 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 294 "query-status gbk" \ 295 "origin SQL: \[ALTER TABLE gbk.invalid_conn_test1 ADD UNIQUE(k), ADD UNIQUE(m)\]: DDL ALTER TABLE \`gbk\`.\`invalid_conn_test1\` ADD UNIQUE(\`k\`) executed in background and met error" 1 296 echo "check test adding UNIQUE on column with duplicate data (multi-schema change) successfully" 297 } 298 299 cleanup_data gbk gbk2 gbk3 300 # also cleanup dm processes in case of last run failed 301 cleanup_process $* 302 run $* 303 cleanup_process $* 304 305 echo "[$(date)] <<<<<< test case $TEST_NAME success! >>>>>>"