1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
|
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/have_lowercase0.inc
--source include/have_innodb_16k.inc
--echo # Additional test cases to verify that ALTER ADD PRIMARY KEY works fine
--echo #
--echo # What this test is doing:
--echo #
--echo # Upgrade server to latest
--echo # Keep a zipped copy of upgraded datadir
--echo #
--echo # For all possible primary key columns
--echo # --let $pk_col = [c3, c7, c11, c5, c9, c13] {
--echo #
--echo # Shutdown server, unzip upgraded datadir
--echo # Now we can process $pk_col
--echo #
--echo # For all row formats
--echo # --let $row_format = [redundant, compact, dynamic] {
--echo # --source suite/innodb/include/bug33788578_ddl_prepare.inc
--echo #
--echo # For all tables
--echo # --let $table_name = [ta1b1, ta1b2, ta1b4, ta2b1, ta2b2, ta2b4, ta4b1 ta4b2, ta4b4] _$row_format {
--echo # Add the primary key
--echo # --source suite/innodb/include/bug33788578_ddl.inc
--echo # }
--echo # }
--echo #
--echo # }
--echo # Check comments near end of file to see what a1b1, a2b4, etc., means
--echo # This column will be made as the primary key. TODO: include cases for each possible pk_col - test may take too long
--let $pk_col = c3
--echo # Upgrade previous tables to current
--source include/shutdown_mysqld.inc
--copy_file $MYSQLTEST_VARDIR/std_data/instant_ddl/bug33788578_ddl.zip $MYSQL_TMP_DIR/bug33788578_ddl.zip
--file_exists $MYSQL_TMP_DIR/bug33788578_ddl.zip
--exec unzip -qo $MYSQL_TMP_DIR/bug33788578_ddl.zip -d $MYSQL_TMP_DIR
let $DATADIR = $MYSQL_TMP_DIR/data;
--echo # Restart the server
--replace_result $DATADIR DATADIR
--let $restart_parameters = restart: --datadir=$DATADIR
--let $wait_counter=3000
--source include/start_mysqld.inc
SHOW TABLES;
--echo # For all REDUNDANT tables:
--let $row_format = redundant
--echo # Prepare the table
--source suite/innodb/include/bug33788578_ddl_prepare.inc
--echo # For each table, run the test
--echo # Run for ta1b1
--let $table_name = ta1b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta1b2
--let $table_name = ta1b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta1b4
--let $table_name = ta1b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b1
--let $table_name = ta2b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b2
--let $table_name = ta2b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b4
--let $table_name = ta2b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b1
--let $table_name = ta4b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b2
--let $table_name = ta4b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b4
--let $table_name = ta4b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # For all COMPACT tables:
--let $row_format = compact
--echo # Prepare the table
--source suite/innodb/include/bug33788578_ddl_prepare.inc
--echo # For each table, run the test
--echo # Run for ta1b1
--let $table_name = ta1b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta1b2
--let $table_name = ta1b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta1b4
--let $table_name = ta1b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b1
--let $table_name = ta2b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b2
--let $table_name = ta2b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b4
--let $table_name = ta2b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b1
--let $table_name = ta4b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b2
--let $table_name = ta4b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b4
--let $table_name = ta4b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # For all DYNAMIC tables:
--let $row_format = dynamic
--echo # Prepare the table
--source suite/innodb/include/bug33788578_ddl_prepare.inc
--echo # For each table, run the test
--echo # Run for ta1b1
--let $table_name = ta1b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta1b2
--let $table_name = ta1b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta1b4
--let $table_name = ta1b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b1
--let $table_name = ta2b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b2
--let $table_name = ta2b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta2b4
--let $table_name = ta2b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b1
--let $table_name = ta4b1_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b2
--let $table_name = ta4b2_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Run for ta4b4
--let $table_name = ta4b4_$row_format
--source suite/innodb/include/bug33788578_ddl.inc
--echo # Cleanup
--echo # Shutdown server
--source include/shutdown_mysqld.inc
--echo # Remove temp files used
--file_exists $MYSQL_TMP_DIR/bug33788578_ddl.zip
--force-rmdir $MYSQL_TMP_DIR/data
--remove_file $MYSQL_TMP_DIR/bug33788578_ddl.zip
--echo # Restart server to restore server state
let $restart_parameters =;
--source include/start_mysqld.inc
# Tables created in 8.0.28:
# ======
# 8.0.28
# ======
#
# DROP DATABASE IF EXISTS test; CREATE DATABASE test;
# USE test;
#
# -- ta1b1
# CREATE TABLE ta1b1 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta1b1 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta1b1 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- no alter in 8.0.28 --
# -- <UPGRADE>
#
# -- ta1b2
# CREATE TABLE ta1b2 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta1b2 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta1b2 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- no alter in 8.0.28 --
# -- <UPGRADE>
#
# -- ta1b4
# CREATE TABLE ta1b4 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta1b4 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta1b4 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- no alter in 8.0.28 --
# -- <UPGRADE>
#
# -- ta2b1
# CREATE TABLE ta2b1 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta2b1 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta2b1 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- alter add in 8.0.28 --
# ALTER TABLE ta2b1 ADD COLUMN c6 INT, ADD COLUMN c7 INT NOT NULL, ALGORITHM=INSTANT;
# ALTER TABLE ta2b1 ADD COLUMN c8 INT DEFAULT 80, ADD COLUMN c9 INT NOT NULL DEFAULT 90, ALGORITHM=INSTANT;
#
# -- <UPGRADE>
#
# -- ta2b2
# CREATE TABLE ta2b2 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta2b2 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta2b2 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- alter add in 8.0.28 --
# ALTER TABLE ta2b2 ADD COLUMN c6 INT, ADD COLUMN c7 INT NOT NULL, ALGORITHM=INSTANT;
# ALTER TABLE ta2b2 ADD COLUMN c8 INT DEFAULT 80, ADD COLUMN c9 INT NOT NULL DEFAULT 90, ALGORITHM=INSTANT;
#
# -- <UPGRADE>
#
# -- ta2b4
# CREATE TABLE ta2b4 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta2b4 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta2b4 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- alter add in 8.0.28 --
# ALTER TABLE ta2b4 ADD COLUMN c6 INT, ADD COLUMN c7 INT NOT NULL, ALGORITHM=INSTANT;
# ALTER TABLE ta2b4 ADD COLUMN c8 INT DEFAULT 80, ADD COLUMN c9 INT NOT NULL DEFAULT 90, ALGORITHM=INSTANT;
#
# -- <UPGRADE>
#
# -- ta4b1
# CREATE TABLE ta4b1 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta4b1 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta4b1 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- alter add in 8.0.28 --
# ALTER TABLE ta4b1 ADD COLUMN c6 INT, ADD COLUMN c7 INT NOT NULL, ALGORITHM=INSTANT;
# ALTER TABLE ta4b1 ADD COLUMN c8 INT DEFAULT 80, ADD COLUMN c9 INT NOT NULL DEFAULT 90, ALGORITHM=INSTANT;
#
# INSERT INTO ta4b1 VALUES (3, "row3", 222, 333, 444, 555, 666, 777, 888, 999);
# INSERT INTO ta4b1 (c0, c1, c3, c5, c7, c9) VALUES (4, "row4", 3333, 5555, 7777, 9999);
#
# -- <UPGRADE>
#
# -- ta4b2
# CREATE TABLE ta4b2 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta4b2 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta4b2 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- alter add in 8.0.28 --
# ALTER TABLE ta4b2 ADD COLUMN c6 INT, ADD COLUMN c7 INT NOT NULL, ALGORITHM=INSTANT;
# ALTER TABLE ta4b2 ADD COLUMN c8 INT DEFAULT 80, ADD COLUMN c9 INT NOT NULL DEFAULT 90, ALGORITHM=INSTANT;
#
# INSERT INTO ta4b2 VALUES (3, "row3", 222, 333, 444, 555, 666, 777, 888, 999);
# INSERT INTO ta4b2 (c0, c1, c3, c5, c7, c9) VALUES (4, "row4", 3333, 5555, 7777, 9999);
#
# -- <UPGRADE>
#
# -- ta4b4
# CREATE TABLE ta4b4 (c0 INT, c1 TEXT, c2 INT, c3 INT NOT NULL, c4 INT DEFAULT 40, c5 INT NOT NULL DEFAULT 50) ENGINE=INNODB;
#
# INSERT INTO ta4b4 VALUES (1, "row1", 2, 3, 4, 5);
# INSERT INTO ta4b4 (c0, c1, c3, c5) VALUES (2, "row2", 33, 55);
#
# -- alter add in 8.0.28 --
# ALTER TABLE ta4b4 ADD COLUMN c6 INT, ADD COLUMN c7 INT NOT NULL, ALGORITHM=INSTANT;
# ALTER TABLE ta4b4 ADD COLUMN c8 INT DEFAULT 80, ADD COLUMN c9 INT NOT NULL DEFAULT 90, ALGORITHM=INSTANT;
#
# INSERT INTO ta4b4 VALUES (3, "row3", 222, 333, 444, 555, 666, 777, 888, 999);
# INSERT INTO ta4b4 (c0, c1, c3, c5, c7, c9) VALUES (4, "row4", 3333, 5555, 7777, 9999);
#
# -- <UPGRADE>
#
# What does an, bn mean:
#
# [mysql-8.0.28-release] Table definition
# a1. Table: instant rows: n & instant cols: n
# a2. Table: instant rows: n & instant cols: y
# a3. Table: instant rows: y & instant cols: n------------<<< not possible
# a4. Table: instant rows: y & instant cols: y
#
# [mysql-trunk] Table definition
# b1. Table: version rows: n & version cols: n
# b2. Table: version rows: n & version cols: y
# b3. Table: version rows: y & version cols: n------------<< not possible
# b4. Table: version rows: y & version cols: y
#
# [Combinations of tables] Table after upgrade:
# a1 [a1 - b1] Table: instant rows: n & instant cols: n && version rows: n & version cols: n
# [a1 - b2] Table: instant rows: n & instant cols: n && version rows: n & version cols: y
# [a1 - b3] Table: instant rows: n & instant cols: n && version rows: y & version cols: n------------<< not possible
# [a1 - b4] Table: instant rows: n & instant cols: n && version rows: y & version cols: y
# a2 [a2 - b1] Table: instant rows: n & instant cols: y && version rows: n & version cols: n
# [a2 - b2] Table: instant rows: n & instant cols: y && version rows: n & version cols: y
# [a2 - b3] Table: instant rows: n & instant cols: y && version rows: y & version cols: n------------<< not possible
# [a2 - b4] Table: instant rows: n & instant cols: y && version rows: y & version cols: y
# a3 [a3 - b1] Table: instant rows: y & instant cols: n && version rows: n & version cols: n------------<< not possible
# [a3 - b2] Table: instant rows: y & instant cols: n && version rows: n & version cols: y------------<< not possible
# [a3 - b3] Table: instant rows: y & instant cols: n && version rows: y & version cols: n------------<< not possible
# [a3 - b4] Table: instant rows: y & instant cols: n && version rows: y & version cols: y------------<< not possible
# a4 [a4 - b1] Table: instant rows: y & instant cols: y && version rows: n & version cols: n
# [a4 - b2] Table: instant rows: y & instant cols: y && version rows: n & version cols: y
# [a4 - b3] Table: instant rows: y & instant cols: y && version rows: y & version cols: n------------<< not possible
# [a4 - b4] Table: instant rows: y & instant cols: y && version rows: y & version cols: y
#
# Final tables: [a1b1, a1b2, a1b4, a2b1, a2b2, a2b4, a4b1, a4b2, a4b4]
#
# End
|