File: innodb-alter-varchar.result

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (54 lines) | stat: -rw-r--r-- 3,119 bytes parent folder | download
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
#
# Bug#15863023 SUPPORT IN-PLACE EXTENSION OF VARCHAR COLUMN
#
CREATE TABLE t1 (pk VARCHAR(2) PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t2 (fk VARCHAR(2), FOREIGN KEY (fk) REFERENCES t1 (pk))
ENGINE=InnoDB;
INSERT INTO t1 VALUES ('aa'), ('bb');
INSERT INTO t2 VALUES ('aa'), ('bb');
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN pk pk VARCHAR(5);
INSERT INTO t1 VALUES ('co');
INSERT INTO t2 VALUES ('co');
INSERT IGNORE INTO t2 VALUES ('code');
Warnings:
Warning	1265	Data truncated for column 'fk' at row 1
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(7);
INSERT INTO t2 VALUES ('code');
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fk`) REFERENCES `t1` (`pk`))
INSERT INTO t2 VALUES ('coastal');
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fk`) REFERENCES `t1` (`pk`))
INSERT INTO t2 VALUES ('coast');
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fk`) REFERENCES `t1` (`pk`))
INSERT INTO t1 VALUES ('coast');
INSERT INTO t2 VALUES ('coastal');
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`fk`) REFERENCES `t1` (`pk`))
INSERT INTO t2 VALUES ('coast');
DROP TABLE t2, t1;
CREATE TABLE t1 (pk VARCHAR(2) PRIMARY KEY) ENGINE=InnoDB charset latin1;
CREATE TABLE t2 (fk VARCHAR(2),
CONSTRAINT fk FOREIGN KEY (fk) REFERENCES t1 (pk))
ENGINE=InnoDB charset latin1;
INSERT INTO t1 VALUES ('aa'), ('bb');
INSERT INTO t2 VALUES ('aa'), ('bb');
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(6);
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(255);
# We cannot shrink the size or cross the 256-byte boundary.
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(6);
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(256);
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
# ALGORITHM=COPY has more limitations with FOREIGN KEY.
ALTER TABLE t2 CHANGE COLUMN fk fk VARCHAR(256);
ERROR HY000: Cannot change column 'fk': used in a foreign key constraint 'fk'
ALTER TABLE t2 ALGORITHM=INPLACE, DROP FOREIGN KEY fk;
ALTER TABLE t2 CHANGE COLUMN fk fk VARCHAR(256);
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(300);
SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(99999);
ERROR 42000: BLOB/TEXT column 'fk' used in key specification without a key length
ALTER TABLE t2 ALGORITHM=INPLACE, DROP INDEX fk;
# Type change from VARCHAR to BLOB is not supported.
ALTER TABLE t2 ALGORITHM=INPLACE, CHANGE COLUMN fk fk VARCHAR(99999);
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
DROP TABLE t2, t1;
SET sql_mode = default;