1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-15872 Crash in online ALTER TABLE...ADD PRIMARY KEY after instant ADD COLUMN...NULL

row_log_table_get_pk_col(): Replace a condition that was inadvertently
removed in MDEV-16365. PRIMARY KEY columns are never allowed to be NULL,
and failure to enforce the constraint caused a null pointer to be
dereferenced in mem_heap_dup().
This commit is contained in:
Marko Mäkelä
2018-08-14 19:34:33 +03:00
parent e10ca66bab
commit 021652ba50
3 changed files with 53 additions and 2 deletions

View File

@@ -234,6 +234,32 @@ SET DEBUG_SYNC = 'now SIGNAL logged';
connection ddl;
reap;
connection default;
SET DEBUG_SYNC = RESET;
SELECT * FROM t1;
--echo #
--echo # MDEV-15872 Crash in online ALTER TABLE...ADD PRIMARY KEY
--echo # after instant ADD COLUMN ... NULL
--echo #
ALTER TABLE t1 ADD COLUMN d INT, ALGORITHM=INSTANT;
UPDATE t1 SET d=1;
connection ddl;
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL copied WAIT_FOR logged';
send ALTER IGNORE TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY (a,d);
connection default;
SET DEBUG_SYNC = 'now WAIT_FOR copied';
BEGIN;
INSERT INTO t1 SET a=3;
ROLLBACK;
SET DEBUG_SYNC = 'now SIGNAL logged';
connection ddl;
--error ER_INVALID_USE_OF_NULL
reap;
disconnect ddl;
connection default;