mirror of
https://github.com/MariaDB/server.git
synced 2025-08-30 11:22:14 +03:00
The test innodb.innodb_wl6326 that had been disabled in 10.4 due to
MDEV-21535 is failing on 10.5 due to a different reason: the removal
of the MLOG_COMP_END_COPY_CREATED operations in MDEV-12353
commit 276f996af9
caused PAGE_LAST_INSERT
to be set to something nonzero by the function page_copy_rec_list_end().
This in turn would cause btr_page_get_split_rec_to_right() to behave
differently: we would not attempt to split the page at all, but simply
insert the new record into the new, empty, right leaf page.
Even though the change reduced the sizes of some tables, it is better
to aim for balanced trees.
page_copy_rec_list_end(), PageBulk::finishPage():
Preserve PAGE_LAST_INSERT, PAGE_N_DIRECTION, PAGE_DIRECTION.
PageBulk::finish(): Move some common code from PageBulk::finishPage().
119 lines
6.0 KiB
Plaintext
119 lines
6.0 KiB
Plaintext
Testing tables with large records
|
|
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b VARCHAR(256), c VARCHAR(256), KEY SECOND(a, b,c)) ENGINE=INNODB;
|
|
INSERT INTO t1 VALUES (1, REPEAT('A', 256), REPEAT('B', 256));
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
INSERT INTO t1 (b) SELECT b from t1;
|
|
SET GLOBAL innodb_fast_shutdown = 0;
|
|
# restart
|
|
optimize table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 optimize status OK
|
|
select count(*) from t1;
|
|
count(*)
|
|
927
|
|
select count(*) from t1 force index (second);
|
|
count(*)
|
|
927
|
|
# A few more insertions on the page should not cause a page split.
|
|
insert into t1 values (81, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (83, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (87, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (82, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (86, REPEAT('A', 256), REPEAT('B', 256));
|
|
# Insert more rows to cause a page split
|
|
insert into t1 values (180, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (181, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (182, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (183, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (184, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (185, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (186, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (187, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (188, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (189, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (190, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (191, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (192, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (193, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (194, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (195, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (196, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (197, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (198, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (199, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (200, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (201, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (202, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (203, REPEAT('A', 256), REPEAT('B', 256));
|
|
insert into t1 values (204, REPEAT('A', 256), REPEAT('B', 256));
|
|
DROP TABLE t1;
|
|
Testing table with small records
|
|
CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b VARCHAR(16), c VARCHAR(32), KEY SECOND(a,b,c)) ENGINE=INNODB;
|
|
SET GLOBAL innodb_fast_shutdown = 0;
|
|
# restart
|
|
optimize table t2;
|
|
Table Op Msg_type Msg_text
|
|
test.t2 optimize status OK
|
|
select count(*) from t2;
|
|
count(*)
|
|
3701
|
|
select count(*) from t2 force index(second);
|
|
count(*)
|
|
3701
|
|
The page should have room for about 20 insertions
|
|
insert into t2 values(1181, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1191, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1182, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1192, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1183, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1193, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1184, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1194, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1185, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1195, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1186, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1196, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1187, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1197, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1188, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1198, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1189, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1199, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1190, REPEAT('A', 16), REPEAT('B',32));
|
|
insert into t2 values(1180, REPEAT('A', 16), REPEAT('B',32));
|
|
# Insert more rows to cause a page split
|
|
insert into t2 values (180, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (181, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (182, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (183, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (184, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (185, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (186, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (187, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (188, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (189, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (190, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (191, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (192, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (193, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (194, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (195, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (196, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (197, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (198, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (199, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (200, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (201, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (202, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (203, REPEAT('A', 16), REPEAT('B', 32));
|
|
insert into t2 values (204, REPEAT('A', 16), REPEAT('B', 32));
|
|
DROP TABLE t2;
|