diff options
-rw-r--r-- | mysql-test/suite/innodb/r/innodb-64k.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb-64k.test | 5 | ||||
-rw-r--r-- | storage/innobase/btr/btr0bulk.cc | 7 |
3 files changed, 13 insertions, 3 deletions
diff --git a/mysql-test/suite/innodb/r/innodb-64k.result b/mysql-test/suite/innodb/r/innodb-64k.result index 372dbbb91a0..189a615cbe3 100644 --- a/mysql-test/suite/innodb/r/innodb-64k.result +++ b/mysql-test/suite/innodb/r/innodb-64k.result @@ -1081,9 +1081,11 @@ COMMIT; drop table t2; DROP TABLE t1; # -# MDEV-19526 heap number overflow +# MDEV-19526/MDEV-29742 heap number overflow # CREATE TABLE t1(a SMALLINT NOT NULL UNIQUE AUTO_INCREMENT, KEY(a)) ENGINE=InnoDB; INSERT INTO t1 (a) SELECT seq FROM seq_1_to_8191; +ALTER TABLE t1 FORCE, ALGORITHM=INPLACE; DROP TABLE t1; +# End of 10.3 tests diff --git a/mysql-test/suite/innodb/t/innodb-64k.test b/mysql-test/suite/innodb/t/innodb-64k.test index 62d7b929ba1..972ba6bb8b8 100644 --- a/mysql-test/suite/innodb/t/innodb-64k.test +++ b/mysql-test/suite/innodb/t/innodb-64k.test @@ -641,9 +641,12 @@ drop table t2; DROP TABLE t1; --echo # ---echo # MDEV-19526 heap number overflow +--echo # MDEV-19526/MDEV-29742 heap number overflow --echo # CREATE TABLE t1(a SMALLINT NOT NULL UNIQUE AUTO_INCREMENT, KEY(a)) ENGINE=InnoDB; INSERT INTO t1 (a) SELECT seq FROM seq_1_to_8191; +ALTER TABLE t1 FORCE, ALGORITHM=INPLACE; DROP TABLE t1; + +--echo # End of 10.3 tests diff --git a/storage/innobase/btr/btr0bulk.cc b/storage/innobase/btr/btr0bulk.cc index fdeba1e375b..0b53438feb7 100644 --- a/storage/innobase/btr/btr0bulk.cc +++ b/storage/innobase/btr/btr0bulk.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2014, 2019, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2021, MariaDB Corporation. +Copyright (c) 2017, 2022, MariaDB Corporation. 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 @@ -597,6 +597,11 @@ bool PageBulk::isSpaceAvailable( ulint rec_size) { + if (m_rec_no >= 8190) { + ut_ad(srv_page_size == 65536); + return false; + } + ulint slot_size; ulint required_space; |