mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
fdb37d084b
- Problem is that failure of inplace DDL tries to access the
uninitialized column. This is caused by MDEV-19606 (commit 0274ab1de3
).
Fix is that InnoDB should use column while freeing the index when index
is completely initialized.
63 lines
3.6 KiB
Text
63 lines
3.6 KiB
Text
--- instant_alter_limit.result 2020-05-26 18:01:27.377946439 +0530
|
|
+++ instant_alter_limit,8k.reject 2020-05-26 20:19:50.881869095 +0530
|
|
@@ -5,6 +5,28 @@
|
|
ENGINE=InnoDB;
|
|
INSERT INTO t VALUES(1,2,3,4,5);
|
|
SET innodb_strict_mode = OFF;
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
SELECT * FROM t;
|
|
b d a c e
|
|
NULL NULL 1 NULL NULL
|
|
@@ -12,11 +34,17 @@
|
|
ADD COLUMN b INT, ALGORITHM=INSTANT;
|
|
ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=INPLACE
|
|
ALTER TABLE t CHANGE COLUMN b beta INT AFTER a, ALGORITHM=INSTANT;
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
ALTER TABLE t DROP e, DROP c, DROP d, ALGORITHM=INSTANT;
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
SELECT * FROM t;
|
|
a beta
|
|
1 NULL
|
|
ALTER TABLE t DROP COLUMN beta, ALGORITHM=INSTANT;
|
|
+Warnings:
|
|
+Warning 139 Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
|
|
ALTER TABLE t ADD COLUMN b INT NOT NULL, ALGORITHM=INSTANT;
|
|
ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=INPLACE
|
|
SELECT variable_value-@old_instant instants
|
|
@@ -43,5 +71,12 @@
|
|
FROM information_schema.global_status
|
|
WHERE variable_name = 'innodb_instant_alter_column';
|
|
instants
|
|
-502
|
|
+492
|
|
DROP TABLE t;
|
|
+#
|
|
+# MDEV-21787 Alter table failure tries to access uninitialized column
|
|
+#
|
|
+CREATE TABLE t1(f1 INT PRIMARY KEY, f2 TEXT GENERATED ALWAYS AS (SUBSTR(f4, 1, 400)), f3 VARCHAR(500), f4 TEXT)ENGINE=InnoDB ROW_FORMAT=Compact;
|
|
+ALTER TABLE t1 ADD UNIQUE KEY (f2(9));
|
|
+ALTER TABLE t1 ADD COLUMN f5 TEXT, ALGORITHM=INPLACE;
|
|
+DROP TABLE t1;
|