mirror of
https://github.com/MariaDB/server.git
synced 2025-11-15 09:02:33 +03:00
Analysis: Lengths which are not UNIV_SQL_NULL, but bigger than the following number indicate that a field contains a reference to an externally stored part of the field in the tablespace. The length field then contains the sum of the following flag and the locally stored len. This was incorrectly set to define UNIV_EXTERN_STORAGE_FIELD (UNIV_SQL_NULL - UNIV_PAGE_SIZE_MAX) When it should be define UNIV_EXTERN_STORAGE_FIELD (UNIV_SQL_NULL - UNIV_PAGE_SIZE_DEF) Additionally, we need to disable support for > 16K page size for row compressed tables because a compressed page directory entry reserves 14 bits for the start offset and 2 bits for flags. This limits the uncompressed page size to 16k. To support larger pages page directory entry needs to be larger.
44 lines
1.2 KiB
Plaintext
44 lines
1.2 KiB
Plaintext
#
|
|
# Bug#69122 - INNODB DOESN'T REDO-LOG INSERT BUFFER MERGE
|
|
# OPERATION IF IT IS DONE IN-PLACE
|
|
#
|
|
SET GLOBAL innodb_change_buffering_debug = 1;
|
|
CREATE TABLE t1(
|
|
a INT AUTO_INCREMENT PRIMARY KEY,
|
|
b CHAR(1),
|
|
c INT,
|
|
INDEX(b))
|
|
ENGINE=InnoDB;
|
|
INSERT INTO t1 VALUES(0,'x',1);
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
INSERT INTO t1 SELECT 0,b,c FROM t1;
|
|
BEGIN;
|
|
SELECT b FROM t1 LIMIT 3;
|
|
b
|
|
x
|
|
x
|
|
x
|
|
BEGIN;
|
|
DELETE FROM t1 WHERE a=1;
|
|
INSERT INTO t1 VALUES(1,'X',1);
|
|
SET DEBUG_DBUG='+d,crash_after_log_ibuf_upd_inplace';
|
|
SELECT b FROM t1 LIMIT 3;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
FOUND /Wrote log record for ibuf update in place operation/ in my_restart.err
|
|
CHECK TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
DROP TABLE t1;
|