Commit d4144c8e authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-17821 Assertion !page_rec_is_supremum(rec) failed in btr_pcur_store_position

MDEV-11369 (instant ADD COLUMN) introduced a regression in the case the
leftmost leaf page of the clustered index is empty except for the
hidden metadata record.

btr_pcur_store_position(): If the only record in the leftmost leaf page
is the metadata record, store the position before the first user record
in the tree.
parent 77819245
#
# MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed
# in btr_pcur_store_position
#
CREATE TABLE t1 (pk INT PRIMARY KEY, c INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,2);
ALTER TABLE t1 ADD COLUMN f VARCHAR(255);
ALTER TABLE t1 DROP COLUMN f;
DELETE FROM t1;
HANDLER t1 OPEN;
HANDLER t1 READ `PRIMARY` <= (3);
pk c
DROP TABLE t1;
CREATE TABLE t1 (
pk INT AUTO_INCREMENT,
f1 CHAR(32),
f2 CHAR(32),
f3 CHAR(32),
f4 INT,
f5 CHAR(32),
f6 INT,
f7 INT,
f8 INT,
PRIMARY KEY (pk),
UNIQUE (f6)
) ENGINE=InnoDB;
INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES
('reality', 'llt', 'within', -1996816384, 'j', 160, 7, -1822687232),
('h', 'j', 'j', 251, 'civilian', NULL, 211, NULL),
('ltq', 'b', 'mud', 111, 'v', 90, 0, NULL),
('toxic', 'breakfast', 'series', 2, 'x', NULL, 118, 2),
('h', 'n', 'vision', 84, 'n', NULL, 197, 103),
('h', 'tq', 'q', 6, 'bet', -1927151616, -446038016, 3),
('pocket', 'qjt', 'jtl', 0, 'blink', NULL, 12, 0),
('k', 'uv', 'exist', 37, 'g', 149, -1610219520, NULL),
('parent', 'motion', 'u', 70, 'promote', NULL, 178, NULL),
('get', 'convict', 'liquid', -780337152, 'd', NULL, 4, NULL),
('vp', 'px', 'xi', -631111680, 'support', NULL, 8, NULL),
('ck', 'z', 'minority', 8, 'k', NULL, 864878592, NULL),
('kxx', 'g', 'container', 1, 'cholesterol', NULL, 4, 1404436480),
('xxv', 'rail', 'j', 219, 'serious', NULL, -816119808, 62),
('x', 'v', 'vr', 146, 'm', 16, 170, -1765867520),
('age', 'm', 'q', -1251278848, 'rte', 6, 224, NULL),
('discrimination', 't', 'q', 31, 'exl', 0, 2, 244),
('water', 'x', 'ldb', 98, 'r', 235, 4, 63),
('d', 'db', 'p', 248, 'so-called', 102, -255524864, 198),
('last', 'bz', 'us', 0, 'experienced', 137, 240, 134),
('q', 'z', 'attract', 67, 'code', 67, 75, 1758920704),
('yellow', 'c', 'u', 6, 'v', 1731985408, 528154624, 2),
('cognitive', 'he', 'protective', 590020608, 'sentence', NULL, 4, 102),
('eih', 'l', 'ih', 1266024448, 'traditionally', NULL, 190, NULL),
('pine', 'i', 'y', 6, 'glimpse', 214, 7, -1486880768),
('jo', 'everyone', 'ol', 0, 'lj', NULL, 1, 0),
('blood', 'f', 'scientist', 54, 'j', 1341128704, 168, NULL),
('z', 'brief', 'ambassador', 115, 'ygp', 82, 129, NULL),
('gp', 'severe', 'consist', 7, 'p', -1829961728, 602669056, 154),
('admit', 'poetry', 'x', 116, 'enemy', 174, -2128543744, -407764992),
('s', 'norm', 'decide', 2055667712, 'rtz', NULL, 99, -1233715200),
('tzg', 'f', 'beg', 2016280576, 'w', NULL, -643825664, 137),
('zgg', 'x', 'f', 148, 'y', -987496448, -708116480, 8),
('attorney', 'perfectly', 's', 49, 'z', -1865285632, 56, -1518534656),
('concentrate', 's', 'k', -1028849664, 'tir', 83, -1592459264, 1820065792),
('t', 'sacrifice', 'ir', -2143879168, 'recipe', 156, 217, NULL),
('wdf', 'd', 'f', 137, 'empty', NULL, 188, NULL),
('o', 'customer', 'qd', -2135293952, 'z', 1527840768, 227, -1174929408),
('d', 'qow', 'o', 1472266240, 'whe', NULL, 7, 197),
('deny', 'reputation', 'dutch', 59, 'v', 124, 2, 191),
('m', 'liver', 'fv', 0, 'policy', 781582336, 198574080, 177),
('vk', 'kx', 'immigrant', -1452736512, 'x', 163, 76, 6) ,
('j', 'ru', 'r', 67, 'joke', NULL, 3, NULL),
('o', 'u', 'a', -569442304, 'uz', NULL, 933298176, NULL),
('g', 'zb', 'c', -1694760960, 'fish', 18, -390463488, 1),
('bb', 'o', 'b', 6, 'z', 9, 12, NULL),
('compelling', 'xe', 'debut', 89, 'e', -734724096, 119, 175),
('md', 'r', 'object', 1046478848, 'frequently', 915537920, 0, 1506410496),
('dwn', 'wnz', 'x', 1767571456, 'nz', 241, -882180096, 9),
('zvf', 'vfo', 'g', -844824576, 'w', NULL, 1, 9),
('w', 'pose', 'r', 1029308416, 'a', -48627712, 1756168192, NULL),
('o', 'jwp', 'patient', 172, 'i', 297140224, 45809664, 3),
('w', 'p', 'american', 450297856, 'z', 20, 4, 186),
('ridiculous', 'helpful', 'vy', -2022899712, 'conspiracy', NULL, 162, -264634368),
('t', 'g', 'spite', 289931264, 'y', 4, 13, NULL),
('performer', 'i', 'tomato', -1519386624, 'mz', 8, 87, 106),
('m', 'z', 'hang', 3, 'crowded', -537919488, 1, 2),
('fu', 'uot', 'j', 1, 'o', 179, 220, -2084569088),
('ts', 'n', 'su', 1, 'o', 198, 9, 68),
('ball', 'halfway', 'uf', 40, 'l', 145948672, 9, 149),
('hunting', 'n', 'teenager', 0, 'neat', 209, 2044461056, 68),
('independent', 'along', 'fpn', 5, 'pn', 3, 1353252864, 217),
('p', 'presumably', 'n', -1977548800, 'balanced', 1909260288, 197, NULL),
('pink', 'h', 'tear', 8, 'n', 254, 8, 1006305280),
('tyy', 'n', 'yyr', 1107820544, 'yr', NULL, 0, 219),
('u', 'retirement', 'thread', -2083192832, 'rx', -678232064, 209, 1048969216),
('xk', 'kb', 'z', 9, 'ba', 218, 7, 8),
('a', 'plenty', 'forget', 36, 'c', 215, 2027094016, NULL),
('i', 'compromise', 'n', -1090256896, 'o', 10, 66, 1872887808),
('x', 'disappointment', 'cognitive', 753860608, 'ua', 77, 123, 10),
('e', 'added', 'aub', 2, 'u', NULL, 9, 92),
('bc', 'h', 'n', 146, 'master', NULL, 1003945984, NULL),
('execution', 'f', 'cgp', 574423040, 'gp', 2, -518782976, -1189085184),
('pv', 'bad', 'v', 132, 'r', 195, 6, 5),
('modify', 'participation', 'vol', 237, 'j', -842924032, 88, -747765760),
('substantially', 'i', 'congressional', 2, 'edit', NULL, 1003159552, NULL),
('tell', 'forty', 'v', -910098432, 'd', 43, 3, NULL),
('crawl', 'ad', 'respect', -1851195392, 'p', 72, -1709047808, 1343225856),
('w', 'reception', 'fiber', 56, 's', NULL, 2, -993787904),
('successful', 'instruct', 'dug', 2, 'u', 7, -411500544, NULL),
('appointment', 'pregnant', 'weird', 2, 'r', NULL, -897384448, 76),
('g', 'j', 'thin', 663617536, 'oan', 1, 7, NULL),
('secretary', 'a', 'o', 103, 'nj', 1977745408, -1291124736, -1314521088),
('g', 'jq', 'q', 1875116032, 'blame', NULL, 1, 4),
('oj', 'j', 'breast', 150, 'c', NULL, 3, NULL),
('rd', 'm', 'comprehensive', 1723334656, 't', NULL, 155, -312344576) ,
('a', 'd', 'criminal', -1155137536, 'airplane', 242, -662896640, 1),
('fast', 'i', 'k', -386662400, 'zxe', NULL, 7, 119),
('xe', 'mouse', 'c', -205717504, 'ew', NULL, -729612288, 86),
('hang', 'j', 'o', 3, 'hungry', NULL, 200, 49),
('expense', 'z', 'sum', 2, 'gob', -472055808, -538181632, NULL),
('nest', 'o', 'k', 116, 'weak', NULL, 223, NULL);
INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES ('impact', 'b', 'h', 185, 'fj', 7, 7, 3);
ERROR 23000: Duplicate entry '7' for key 'f6'
ALTER TABLE t1 ADD COLUMN filler VARCHAR(255) DEFAULT '';
SELECT * FROM t1 INTO OUTFILE 'load.data';
UPDATE IGNORE t1 SET pk = 0;
LOAD DATA INFILE 'load.data' REPLACE INTO TABLE t1;
HANDLER t1 OPEN AS h;
HANDLER h READ `PRIMARY` PREV WHERE 0;
pk f1 f2 f3 f4 f5 f6 f7 f8 filler
HANDLER h CLOSE;
DROP TABLE t1;
--source include/have_innodb.inc
--echo #
--echo # MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed
--echo # in btr_pcur_store_position
--echo #
CREATE TABLE t1 (pk INT PRIMARY KEY, c INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,2);
ALTER TABLE t1 ADD COLUMN f VARCHAR(255);
ALTER TABLE t1 DROP COLUMN f;
DELETE FROM t1;
HANDLER t1 OPEN;
HANDLER t1 READ `PRIMARY` <= (3);
DROP TABLE t1;
CREATE TABLE t1 (
pk INT AUTO_INCREMENT,
f1 CHAR(32),
f2 CHAR(32),
f3 CHAR(32),
f4 INT,
f5 CHAR(32),
f6 INT,
f7 INT,
f8 INT,
PRIMARY KEY (pk),
UNIQUE (f6)
) ENGINE=InnoDB;
INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES
('reality', 'llt', 'within', -1996816384, 'j', 160, 7, -1822687232),
('h', 'j', 'j', 251, 'civilian', NULL, 211, NULL),
('ltq', 'b', 'mud', 111, 'v', 90, 0, NULL),
('toxic', 'breakfast', 'series', 2, 'x', NULL, 118, 2),
('h', 'n', 'vision', 84, 'n', NULL, 197, 103),
('h', 'tq', 'q', 6, 'bet', -1927151616, -446038016, 3),
('pocket', 'qjt', 'jtl', 0, 'blink', NULL, 12, 0),
('k', 'uv', 'exist', 37, 'g', 149, -1610219520, NULL),
('parent', 'motion', 'u', 70, 'promote', NULL, 178, NULL),
('get', 'convict', 'liquid', -780337152, 'd', NULL, 4, NULL),
('vp', 'px', 'xi', -631111680, 'support', NULL, 8, NULL),
('ck', 'z', 'minority', 8, 'k', NULL, 864878592, NULL),
('kxx', 'g', 'container', 1, 'cholesterol', NULL, 4, 1404436480),
('xxv', 'rail', 'j', 219, 'serious', NULL, -816119808, 62),
('x', 'v', 'vr', 146, 'm', 16, 170, -1765867520),
('age', 'm', 'q', -1251278848, 'rte', 6, 224, NULL),
('discrimination', 't', 'q', 31, 'exl', 0, 2, 244),
('water', 'x', 'ldb', 98, 'r', 235, 4, 63),
('d', 'db', 'p', 248, 'so-called', 102, -255524864, 198),
('last', 'bz', 'us', 0, 'experienced', 137, 240, 134),
('q', 'z', 'attract', 67, 'code', 67, 75, 1758920704),
('yellow', 'c', 'u', 6, 'v', 1731985408, 528154624, 2),
('cognitive', 'he', 'protective', 590020608, 'sentence', NULL, 4, 102),
('eih', 'l', 'ih', 1266024448, 'traditionally', NULL, 190, NULL),
('pine', 'i', 'y', 6, 'glimpse', 214, 7, -1486880768),
('jo', 'everyone', 'ol', 0, 'lj', NULL, 1, 0),
('blood', 'f', 'scientist', 54, 'j', 1341128704, 168, NULL),
('z', 'brief', 'ambassador', 115, 'ygp', 82, 129, NULL),
('gp', 'severe', 'consist', 7, 'p', -1829961728, 602669056, 154),
('admit', 'poetry', 'x', 116, 'enemy', 174, -2128543744, -407764992),
('s', 'norm', 'decide', 2055667712, 'rtz', NULL, 99, -1233715200),
('tzg', 'f', 'beg', 2016280576, 'w', NULL, -643825664, 137),
('zgg', 'x', 'f', 148, 'y', -987496448, -708116480, 8),
('attorney', 'perfectly', 's', 49, 'z', -1865285632, 56, -1518534656),
('concentrate', 's', 'k', -1028849664, 'tir', 83, -1592459264, 1820065792),
('t', 'sacrifice', 'ir', -2143879168, 'recipe', 156, 217, NULL),
('wdf', 'd', 'f', 137, 'empty', NULL, 188, NULL),
('o', 'customer', 'qd', -2135293952, 'z', 1527840768, 227, -1174929408),
('d', 'qow', 'o', 1472266240, 'whe', NULL, 7, 197),
('deny', 'reputation', 'dutch', 59, 'v', 124, 2, 191),
('m', 'liver', 'fv', 0, 'policy', 781582336, 198574080, 177),
('vk', 'kx', 'immigrant', -1452736512, 'x', 163, 76, 6) ,
('j', 'ru', 'r', 67, 'joke', NULL, 3, NULL),
('o', 'u', 'a', -569442304, 'uz', NULL, 933298176, NULL),
('g', 'zb', 'c', -1694760960, 'fish', 18, -390463488, 1),
('bb', 'o', 'b', 6, 'z', 9, 12, NULL),
('compelling', 'xe', 'debut', 89, 'e', -734724096, 119, 175),
('md', 'r', 'object', 1046478848, 'frequently', 915537920, 0, 1506410496),
('dwn', 'wnz', 'x', 1767571456, 'nz', 241, -882180096, 9),
('zvf', 'vfo', 'g', -844824576, 'w', NULL, 1, 9),
('w', 'pose', 'r', 1029308416, 'a', -48627712, 1756168192, NULL),
('o', 'jwp', 'patient', 172, 'i', 297140224, 45809664, 3),
('w', 'p', 'american', 450297856, 'z', 20, 4, 186),
('ridiculous', 'helpful', 'vy', -2022899712, 'conspiracy', NULL, 162, -264634368),
('t', 'g', 'spite', 289931264, 'y', 4, 13, NULL),
('performer', 'i', 'tomato', -1519386624, 'mz', 8, 87, 106),
('m', 'z', 'hang', 3, 'crowded', -537919488, 1, 2),
('fu', 'uot', 'j', 1, 'o', 179, 220, -2084569088),
('ts', 'n', 'su', 1, 'o', 198, 9, 68),
('ball', 'halfway', 'uf', 40, 'l', 145948672, 9, 149),
('hunting', 'n', 'teenager', 0, 'neat', 209, 2044461056, 68),
('independent', 'along', 'fpn', 5, 'pn', 3, 1353252864, 217),
('p', 'presumably', 'n', -1977548800, 'balanced', 1909260288, 197, NULL),
('pink', 'h', 'tear', 8, 'n', 254, 8, 1006305280),
('tyy', 'n', 'yyr', 1107820544, 'yr', NULL, 0, 219),
('u', 'retirement', 'thread', -2083192832, 'rx', -678232064, 209, 1048969216),
('xk', 'kb', 'z', 9, 'ba', 218, 7, 8),
('a', 'plenty', 'forget', 36, 'c', 215, 2027094016, NULL),
('i', 'compromise', 'n', -1090256896, 'o', 10, 66, 1872887808),
('x', 'disappointment', 'cognitive', 753860608, 'ua', 77, 123, 10),
('e', 'added', 'aub', 2, 'u', NULL, 9, 92),
('bc', 'h', 'n', 146, 'master', NULL, 1003945984, NULL),
('execution', 'f', 'cgp', 574423040, 'gp', 2, -518782976, -1189085184),
('pv', 'bad', 'v', 132, 'r', 195, 6, 5),
('modify', 'participation', 'vol', 237, 'j', -842924032, 88, -747765760),
('substantially', 'i', 'congressional', 2, 'edit', NULL, 1003159552, NULL),
('tell', 'forty', 'v', -910098432, 'd', 43, 3, NULL),
('crawl', 'ad', 'respect', -1851195392, 'p', 72, -1709047808, 1343225856),
('w', 'reception', 'fiber', 56, 's', NULL, 2, -993787904),
('successful', 'instruct', 'dug', 2, 'u', 7, -411500544, NULL),
('appointment', 'pregnant', 'weird', 2, 'r', NULL, -897384448, 76),
('g', 'j', 'thin', 663617536, 'oan', 1, 7, NULL),
('secretary', 'a', 'o', 103, 'nj', 1977745408, -1291124736, -1314521088),
('g', 'jq', 'q', 1875116032, 'blame', NULL, 1, 4),
('oj', 'j', 'breast', 150, 'c', NULL, 3, NULL),
('rd', 'm', 'comprehensive', 1723334656, 't', NULL, 155, -312344576) ,
('a', 'd', 'criminal', -1155137536, 'airplane', 242, -662896640, 1),
('fast', 'i', 'k', -386662400, 'zxe', NULL, 7, 119),
('xe', 'mouse', 'c', -205717504, 'ew', NULL, -729612288, 86),
('hang', 'j', 'o', 3, 'hungry', NULL, 200, 49),
('expense', 'z', 'sum', 2, 'gob', -472055808, -538181632, NULL),
('nest', 'o', 'k', 116, 'weak', NULL, 223, NULL);
--error ER_DUP_ENTRY
INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES ('impact', 'b', 'h', 185, 'fj', 7, 7, 3);
ALTER TABLE t1 ADD COLUMN filler VARCHAR(255) DEFAULT '';
SELECT * FROM t1 INTO OUTFILE 'load.data';
UPDATE IGNORE t1 SET pk = 0;
LOAD DATA INFILE 'load.data' REPLACE INTO TABLE t1;
HANDLER t1 OPEN AS h;
HANDLER h READ `PRIMARY` PREV WHERE 0;
# Cleanup
HANDLER h CLOSE;
DROP TABLE t1;
--let $datadir= `select @@datadir`
--remove_file $datadir/test/load.data
/***************************************************************************** /*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2016, 2017, MariaDB Corporation. Copyright (c) 2016, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software
...@@ -141,6 +141,7 @@ btr_pcur_store_position( ...@@ -141,6 +141,7 @@ btr_pcur_store_position(
if (page_rec_is_supremum_low(offs)) { if (page_rec_is_supremum_low(offs)) {
cursor->rel_pos = BTR_PCUR_AFTER_LAST_IN_TREE; cursor->rel_pos = BTR_PCUR_AFTER_LAST_IN_TREE;
} else { } else {
before_first:
cursor->rel_pos = BTR_PCUR_BEFORE_FIRST_IN_TREE; cursor->rel_pos = BTR_PCUR_BEFORE_FIRST_IN_TREE;
} }
...@@ -158,8 +159,12 @@ btr_pcur_store_position( ...@@ -158,8 +159,12 @@ btr_pcur_store_position(
rec = page_rec_get_next(rec); rec = page_rec_get_next(rec);
if (rec_is_metadata(rec, index)) { if (rec_is_metadata(rec, index)) {
ut_ad(!page_has_prev(page));
rec = page_rec_get_next(rec); rec = page_rec_get_next(rec);
ut_ad(!page_rec_is_supremum(rec)); if (page_rec_is_supremum(rec)) {
ut_ad(page_has_next(page));
goto before_first;
}
} }
cursor->rel_pos = BTR_PCUR_BEFORE; cursor->rel_pos = BTR_PCUR_BEFORE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment