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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user