Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.3.2
Description
thiru reported a crash with the following instant ADD COLUMN operation that involves splitting the leftmost leaf page and storing a default value off-page:
create table t1(f1 int, f2 int not null)engine=innodb; |
insert into t1 values(1, 2); |
alter table t1 add column f3 int not null default 4, algorithm=instant; |
alter table t1 add column f4 blob not null default repeat('a', 9999), algorithm=instant; |
check table t1; |
drop table t1; |
For the second alter table, an assertion would fail in a debug build:
10.3 ed49f9aae2ad4f8d89294e91fba6a9ec704ded49 |
btr/btr0cur.cc:4679: dberr_t btr_cur_pessimistic_update(ulint, btr_cur_t*, ulint**, mem_heap_t**, mem_heap_t*, big_rec_t**, upd_t*, ulint, que_thr_t*, trx_id_t, mtr_t*): Assertion `flags & BTR_KEEP_POS_FLAG' failed.
|
In a non-debug build, no assertion fails for this test, and the test passes. Theoretically, it might be possible that the default values stored off-page could be attached to a wrong record.
Attachments
Issue Links
- is caused by
-
MDEV-11369 Instant add column for InnoDB
- Closed
- relates to
-
MDEV-17197 "1713: Undo log record is too big" for instant ADD COLUMN with long DEFAULT for BLOB
- Confirmed