1--source include/have_innodb.inc 2 3 4--echo # 5--echo # Bug#15863023 SUPPORT IN-PLACE EXTENSION OF VARCHAR COLUMN 6--echo # 7CREATE TABLE t1 (pk VARCHAR(2) PRIMARY KEY) ENGINE=InnoDB; 8CREATE TABLE t2 (fk VARCHAR(2), FOREIGN KEY (fk) REFERENCES t1 (pk)) 9ENGINE=InnoDB; 10INSERT INTO t1 VALUES ('aa'), ('bb'); 11INSERT INTO t2 VALUES ('aa'), ('bb'); 12ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN pk pk VARCHAR(5); 13INSERT INTO t1 VALUES ('co'); 14 15INSERT INTO t2 VALUES ('co'); 16INSERT IGNORE INTO t2 VALUES ('code'); 17ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(7); 18--error ER_NO_REFERENCED_ROW_2 19INSERT INTO t2 VALUES ('code'); 20--error ER_NO_REFERENCED_ROW_2 21INSERT INTO t2 VALUES ('coastal'); 22--error ER_NO_REFERENCED_ROW_2 23INSERT INTO t2 VALUES ('coast'); 24INSERT INTO t1 VALUES ('coast'); 25--error ER_NO_REFERENCED_ROW_2 26INSERT INTO t2 VALUES ('coastal'); 27INSERT INTO t2 VALUES ('coast'); 28 29DROP TABLE t2, t1; 30 31CREATE TABLE t1 (pk VARCHAR(2) PRIMARY KEY) ENGINE=InnoDB; 32CREATE TABLE t2 (fk VARCHAR(2), 33CONSTRAINT fk FOREIGN KEY (fk) REFERENCES t1 (pk)) 34ENGINE=InnoDB; 35INSERT INTO t1 VALUES ('aa'), ('bb'); 36INSERT INTO t2 VALUES ('aa'), ('bb'); 37ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(6); 38ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(255); 39--echo # We cannot shrink the size or cross the 256-byte boundary. 40--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON 41ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(6); 42--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON 43ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(256); 44--echo # ALGORITHM=COPY has more limitations with FOREIGN KEY. 45--error ER_FK_COLUMN_CANNOT_CHANGE 46ALTER TABLE t2 CHANGE COLUMN fk fk VARCHAR(256); 47ALTER TABLE t2 ALGORITHM=INPLACE, DROP FOREIGN KEY fk; 48ALTER TABLE t2 CHANGE COLUMN fk fk VARCHAR(256); 49ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(300); 50SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; 51--error ER_BLOB_KEY_WITHOUT_LENGTH 52ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(99999); 53ALTER TABLE t2 ALGORITHM=INPLACE, DROP INDEX fk; 54--echo # Type change from VARCHAR to BLOB is not supported. 55--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON 56ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(99999); 57DROP TABLE t2, t1; 58SET sql_mode = default; 59