@@ -411,7 +411,7 @@ DROP TABLE t1;
411411# ---------------------------
412412# ONLINE DDL 1 : NO PK CHANGE
413413# ---------------------------
414- CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=REDUNDANT;;
414+ CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=REDUNDANT;
415415INSERT INTO t1 VALUES ("r1c1", "r1c2");
416416SELECT * FROM t1;
417417c1 c2
@@ -453,7 +453,7 @@ DROP TABLE t1;
453453# ---------------------------
454454# ONLINE DDL 2 : PK CHANGE
455455# ---------------------------
456- CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=REDUNDANT;;
456+ CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=REDUNDANT;
457457INSERT INTO t1 VALUES ("r1c1", "r1c2");
458458SELECT * FROM t1;
459459c1 c2
@@ -491,6 +491,51 @@ c0_upd r1c2
491491c0_upd r2c2
492492c0_upd r3c2
493493c0_upd r4c2
494+ DROP TABLE t1;
495+ # -----------------------
496+ # ONLINE DDL 3 :
497+ # -----------------------
498+ create table t1 (c1 char(10), c2 char(10)) ROW_FORMAT=REDUNDANT;
499+ Insert into t1 values ("r1c1", "r1c2");
500+ Select * from t1;
501+ c1 c2
502+ r1c1 r1c2
503+ alter table t1 add column c3 char(10) default "c3_def", algorithm=instant;
504+ Select * from t1;
505+ c1 c2 c3
506+ r1c1 r1c2 c3_def
507+ Insert into t1 values ("r2c1", "r2c2", "r2c3");
508+ Select * from t1;
509+ c1 c2 c3
510+ r1c1 r1c2 c3_def
511+ r2c1 r2c2 r2c3
512+ Alter table t1 add column c4 char(10) default "c4_def" first, algorithm=INSTANT;
513+ Select * from t1;
514+ c4 c1 c2 c3
515+ c4_def r1c1 r1c2 c3_def
516+ c4_def r2c1 r2c2 r2c3
517+ Insert into t1 values ("r3c4", "r3c1", "r3c2", "r3c3");
518+ Select * from t1;
519+ c4 c1 c2 c3
520+ c4_def r1c1 r1c2 c3_def
521+ c4_def r2c1 r2c2 r2c3
522+ r3c4 r3c1 r3c2 r3c3
523+ # Make alter table wait
524+ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
525+ # Rebuild the table
526+ ALTER TABLE t1 force, algorithm=inplace;;
527+ # connection con1
528+ SET DEBUG_SYNC = 'now WAIT_FOR s1';
529+ # Update query
530+ UPDATE t1 SET c1="c1_upd";
531+ # Let Alter table continue
532+ SET DEBUG_SYNC = 'now SIGNAL s2';
533+ # connection default
534+ SELECT * FROM t1;
535+ c4 c1 c2 c3
536+ c4_def c1_upd r1c2 c3_def
537+ c4_def c1_upd r2c2 r2c3
538+ r3c4 c1_upd r3c2 r3c3
494539###########
495540# CLEANUP #
496541###########
@@ -908,7 +953,7 @@ DROP TABLE t1;
908953# ---------------------------
909954# ONLINE DDL 1 : NO PK CHANGE
910955# ---------------------------
911- CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=DYNAMIC;;
956+ CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=DYNAMIC;
912957INSERT INTO t1 VALUES ("r1c1", "r1c2");
913958SELECT * FROM t1;
914959c1 c2
@@ -950,7 +995,7 @@ DROP TABLE t1;
950995# ---------------------------
951996# ONLINE DDL 2 : PK CHANGE
952997# ---------------------------
953- CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=DYNAMIC;;
998+ CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=DYNAMIC;
954999INSERT INTO t1 VALUES ("r1c1", "r1c2");
9551000SELECT * FROM t1;
9561001c1 c2
@@ -988,6 +1033,51 @@ c0_upd r1c2
9881033c0_upd r2c2
9891034c0_upd r3c2
9901035c0_upd r4c2
1036+ DROP TABLE t1;
1037+ # -----------------------
1038+ # ONLINE DDL 3 :
1039+ # -----------------------
1040+ create table t1 (c1 char(10), c2 char(10)) ROW_FORMAT=DYNAMIC;
1041+ Insert into t1 values ("r1c1", "r1c2");
1042+ Select * from t1;
1043+ c1 c2
1044+ r1c1 r1c2
1045+ alter table t1 add column c3 char(10) default "c3_def", algorithm=instant;
1046+ Select * from t1;
1047+ c1 c2 c3
1048+ r1c1 r1c2 c3_def
1049+ Insert into t1 values ("r2c1", "r2c2", "r2c3");
1050+ Select * from t1;
1051+ c1 c2 c3
1052+ r1c1 r1c2 c3_def
1053+ r2c1 r2c2 r2c3
1054+ Alter table t1 add column c4 char(10) default "c4_def" first, algorithm=INSTANT;
1055+ Select * from t1;
1056+ c4 c1 c2 c3
1057+ c4_def r1c1 r1c2 c3_def
1058+ c4_def r2c1 r2c2 r2c3
1059+ Insert into t1 values ("r3c4", "r3c1", "r3c2", "r3c3");
1060+ Select * from t1;
1061+ c4 c1 c2 c3
1062+ c4_def r1c1 r1c2 c3_def
1063+ c4_def r2c1 r2c2 r2c3
1064+ r3c4 r3c1 r3c2 r3c3
1065+ # Make alter table wait
1066+ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
1067+ # Rebuild the table
1068+ ALTER TABLE t1 force, algorithm=inplace;;
1069+ # connection con1
1070+ SET DEBUG_SYNC = 'now WAIT_FOR s1';
1071+ # Update query
1072+ UPDATE t1 SET c1="c1_upd";
1073+ # Let Alter table continue
1074+ SET DEBUG_SYNC = 'now SIGNAL s2';
1075+ # connection default
1076+ SELECT * FROM t1;
1077+ c4 c1 c2 c3
1078+ c4_def c1_upd r1c2 c3_def
1079+ c4_def c1_upd r2c2 r2c3
1080+ r3c4 c1_upd r3c2 r3c3
9911081###########
9921082# CLEANUP #
9931083###########
@@ -1405,7 +1495,7 @@ DROP TABLE t1;
14051495# ---------------------------
14061496# ONLINE DDL 1 : NO PK CHANGE
14071497# ---------------------------
1408- CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=COMPACT;;
1498+ CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=COMPACT;
14091499INSERT INTO t1 VALUES ("r1c1", "r1c2");
14101500SELECT * FROM t1;
14111501c1 c2
@@ -1447,7 +1537,7 @@ DROP TABLE t1;
14471537# ---------------------------
14481538# ONLINE DDL 2 : PK CHANGE
14491539# ---------------------------
1450- CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=COMPACT;;
1540+ CREATE TABLE t1 (c1 CHAR(10), c2 CHAR(10)) ROW_FORMAT=COMPACT;
14511541INSERT INTO t1 VALUES ("r1c1", "r1c2");
14521542SELECT * FROM t1;
14531543c1 c2
@@ -1485,6 +1575,51 @@ c0_upd r1c2
14851575c0_upd r2c2
14861576c0_upd r3c2
14871577c0_upd r4c2
1578+ DROP TABLE t1;
1579+ # -----------------------
1580+ # ONLINE DDL 3 :
1581+ # -----------------------
1582+ create table t1 (c1 char(10), c2 char(10)) ROW_FORMAT=COMPACT;
1583+ Insert into t1 values ("r1c1", "r1c2");
1584+ Select * from t1;
1585+ c1 c2
1586+ r1c1 r1c2
1587+ alter table t1 add column c3 char(10) default "c3_def", algorithm=instant;
1588+ Select * from t1;
1589+ c1 c2 c3
1590+ r1c1 r1c2 c3_def
1591+ Insert into t1 values ("r2c1", "r2c2", "r2c3");
1592+ Select * from t1;
1593+ c1 c2 c3
1594+ r1c1 r1c2 c3_def
1595+ r2c1 r2c2 r2c3
1596+ Alter table t1 add column c4 char(10) default "c4_def" first, algorithm=INSTANT;
1597+ Select * from t1;
1598+ c4 c1 c2 c3
1599+ c4_def r1c1 r1c2 c3_def
1600+ c4_def r2c1 r2c2 r2c3
1601+ Insert into t1 values ("r3c4", "r3c1", "r3c2", "r3c3");
1602+ Select * from t1;
1603+ c4 c1 c2 c3
1604+ c4_def r1c1 r1c2 c3_def
1605+ c4_def r2c1 r2c2 r2c3
1606+ r3c4 r3c1 r3c2 r3c3
1607+ # Make alter table wait
1608+ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
1609+ # Rebuild the table
1610+ ALTER TABLE t1 force, algorithm=inplace;;
1611+ # connection con1
1612+ SET DEBUG_SYNC = 'now WAIT_FOR s1';
1613+ # Update query
1614+ UPDATE t1 SET c1="c1_upd";
1615+ # Let Alter table continue
1616+ SET DEBUG_SYNC = 'now SIGNAL s2';
1617+ # connection default
1618+ SELECT * FROM t1;
1619+ c4 c1 c2 c3
1620+ c4_def c1_upd r1c2 c3_def
1621+ c4_def c1_upd r2c2 r2c3
1622+ r3c4 c1_upd r3c2 r3c3
14881623###########
14891624# CLEANUP #
14901625###########
0 commit comments