mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)' failed in cmp_rec_rec_simple_field
Problem: ======= InnoDB wrongly stores the primary key field in externally stored off page during bulk insert operation. This leads to assert failure. Solution: ======== row_merge_buf_blob(): Should store the primary key fields inline. Store the variable length field data externally based on the row format of the table. row_merge_buf_write(): check whether the record size exceeds the maximum record size. row_merge_copy_blob_from_file(): Construct the tuple based on the variable length field
This commit is contained in:
@@ -66,4 +66,28 @@ SELECT COUNT(*) FROM t;
|
||||
COUNT(*)
|
||||
2
|
||||
DROP TABLE t1, t2, t;
|
||||
#
|
||||
# MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
# failed in cmp_rec_rec_simple_field
|
||||
#
|
||||
CREATE TABLE t1(a BLOB, b VARCHAR(2048), PRIMARY KEY (b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES
|
||||
(REPEAT('x',4805),'a'), (REPEAT('x',16111),'b'),
|
||||
(REPEAT('x',65535),'c'), (REPEAT('x',11312),'d'),
|
||||
(REPEAT('x',35177),'e'), (REPEAT('x',65535),'f'),
|
||||
(REPEAT('x',1988),'g'), (NULL,REPEAT('x',2048)),
|
||||
(REPEAT('x',2503),'h'), (REPEAT('x',33152),'i'),
|
||||
(REPEAT('x',65535),'j'), (REPEAT('x',1988),'k'),
|
||||
(REPEAT('x',65535),'l'), (REPEAT('x',65535),'m'),
|
||||
(REPEAT('x',65535),'n'), (REPEAT('x',65535),'o'),
|
||||
(REPEAT('x',1988),'p'), (REPEAT('x',2503),'q'),
|
||||
(REPEAT('x',65535),'r'), (REPEAT('x',65535),'s'),
|
||||
(REPEAT('x',65535),'t'), (REPEAT('x',3169),'u'),
|
||||
(REPEAT('x',7071),'v'), (REPEAT('x',16111),'w'),
|
||||
(REPEAT('x',2325),'x'), (REPEAT('x',33152),'y'),
|
||||
(REPEAT('x',65535),'z'), (REPEAT('x',65535),'aa'),
|
||||
(REPEAT('x',16111),'bb'), (REPEAT('x',4805),'cc'),
|
||||
(REPEAT('x',65535),'dd');
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=COPY;
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_stats_persistent=@default_stats_persistent;
|
||||
|
8
mysql-test/suite/innodb/r/innodb-64k-crash,dynamic.rdiff
Normal file
8
mysql-test/suite/innodb/r/innodb-64k-crash,dynamic.rdiff
Normal file
@@ -0,0 +1,8 @@
|
||||
--- innodb-64k-crash.result 2024-11-28 10:37:26.491384671 +0530
|
||||
+++ innodb-64k-crash.reject 2024-11-28 11:05:46.461405444 +0530
|
||||
@@ -334,5 +334,4 @@
|
||||
REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
REPEAT('w', 1024), REPEAT('x', 1024));
|
||||
-ERROR 42000: Row size too large (> 16383). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
DROP TABLE t1;
|
52
mysql-test/suite/innodb/r/innodb-64k-crash,redundant.rdiff
Normal file
52
mysql-test/suite/innodb/r/innodb-64k-crash,redundant.rdiff
Normal file
@@ -0,0 +1,52 @@
|
||||
--- innodb-64k-crash.result 2024-11-28 10:37:26.491384671 +0530
|
||||
+++ innodb-64k-crash.reject 2024-11-28 11:10:13.381250612 +0530
|
||||
@@ -290,49 +290,3 @@
|
||||
# MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
# failed in cmp_rec_rec_simple_field
|
||||
#
|
||||
-CREATE TABLE t1(f1 int not null, f2 text, f3 text, f4 text,
|
||||
-f5 text, f6 text, f7 text, f8 text,
|
||||
-f9 text, f10 text, f11 text, f12 text,
|
||||
-f13 text, f14 text, f15 text, f16 text,
|
||||
-f17 text, f18 text, f19 text, f20 text,
|
||||
-f21 text, f22 text, f23 text, f24 text,
|
||||
-f25 text, PRIMARY KEY(f1))ENGINE=InnoDB;
|
||||
-SET STATEMENT unique_checks=0,foreign_key_checks=0 FOR
|
||||
-INSERT INTO t1 VALUES(1, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
-REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
-REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
-REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
-REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
-REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
-REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
-REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
-REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
-REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
-REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
-REPEAT('w', 1024), REPEAT('x', 1024)),
|
||||
-(2, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
-REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
-REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
-REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
-REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
-REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
-REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
-REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
-REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
-REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
-REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
-REPEAT('w', 1024), REPEAT('x', 1024)),
|
||||
-(3, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
-REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
-REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
-REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
-REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
-REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
-REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
-REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
-REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
-REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
-REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
-REPEAT('w', 1024), REPEAT('x', 1024));
|
||||
-ERROR 42000: Row size too large (> 16383). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
-DROP TABLE t1;
|
@@ -286,3 +286,53 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
test.t2 check status OK
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
# failed in cmp_rec_rec_simple_field
|
||||
#
|
||||
CREATE TABLE t1(f1 int not null, f2 text, f3 text, f4 text,
|
||||
f5 text, f6 text, f7 text, f8 text,
|
||||
f9 text, f10 text, f11 text, f12 text,
|
||||
f13 text, f14 text, f15 text, f16 text,
|
||||
f17 text, f18 text, f19 text, f20 text,
|
||||
f21 text, f22 text, f23 text, f24 text,
|
||||
f25 text, PRIMARY KEY(f1))ENGINE=InnoDB;
|
||||
SET STATEMENT unique_checks=0,foreign_key_checks=0 FOR
|
||||
INSERT INTO t1 VALUES(1, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
REPEAT('w', 1024), REPEAT('x', 1024)),
|
||||
(2, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
REPEAT('w', 1024), REPEAT('x', 1024)),
|
||||
(3, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
REPEAT('w', 1024), REPEAT('x', 1024));
|
||||
ERROR 42000: Row size too large (> 16383). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
DROP TABLE t1;
|
||||
|
@@ -1,4 +1,6 @@
|
||||
@@ -377,8 +377,6 @@
|
||||
--- insert_into_empty.result
|
||||
+++ insert_into_empty,32k.result
|
||||
@@ -446,12 +446,9 @@
|
||||
c09 text, c10 text, c11 text, c12 text) ENGINE=InnoDB;
|
||||
SET GLOBAL INNODB_DEFAULT_ROW_FORMAT= COMPACT;
|
||||
ALTER TABLE t1 FORCE;
|
||||
@@ -7,3 +9,7 @@
|
||||
INSERT IGNORE INTO t1 VALUES
|
||||
(1, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107)),
|
||||
(2, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107));
|
||||
-ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
|
@@ -1,10 +1,38 @@
|
||||
--- a/mysql-test/suite/innodb/r/insert_into_empty.result
|
||||
+++ b/mysql-test/suite/innodb/r/insert_into_empty.result
|
||||
@@ -430,6 +430,7 @@
|
||||
--- insert_into_empty.result
|
||||
+++ insert_into_empty,4k.result
|
||||
@@ -451,7 +451,7 @@
|
||||
INSERT IGNORE INTO t1 VALUES
|
||||
(1, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107)),
|
||||
(2, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107));
|
||||
-ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
+ERROR 42000: Row size too large (> 1982). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
@@ -541,26 +541,4 @@
|
||||
DELETE FROM t1;
|
||||
commit;
|
||||
DROP TABLE t1;
|
||||
-#
|
||||
-# MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
-# failed in cmp_rec_rec_simple_field
|
||||
-#
|
||||
-CREATE TABLE t1(a BLOB, b VARCHAR(2048), PRIMARY KEY (b)) ENGINE=InnoDB;
|
||||
-INSERT INTO t1 VALUES (REPEAT('x',4805),'a'), (REPEAT('x',16111),'b'),
|
||||
-(REPEAT('x',65535),'c'), (REPEAT('x',11312),'d'),
|
||||
-(REPEAT('x',35177),'e'), (REPEAT('x',65535),'f'),
|
||||
-(REPEAT('x',1988),'g'), (NULL,REPEAT('x',2048)),
|
||||
-(REPEAT('x',2503),'h'), (REPEAT('x',33152),'i'),
|
||||
-(REPEAT('x',65535),'j'), (REPEAT('x',1988),'k'),
|
||||
-(REPEAT('x',65535),'l'), (REPEAT('x',65535),'m'),
|
||||
-(REPEAT('x',65535),'n'), (REPEAT('x',65535),'o'),
|
||||
-(REPEAT('x',1988),'p'), (REPEAT('x',2503),'q'),
|
||||
-(REPEAT('x',65535),'r'), (REPEAT('x',65535),'s'),
|
||||
-(REPEAT('x',65535),'t'), (REPEAT('x',3169),'u'),
|
||||
-(REPEAT('x',7071),'v'), (REPEAT('x',16111),'w'),
|
||||
-(REPEAT('x',2325),'x'), (REPEAT('x',33152),'y'),
|
||||
-(REPEAT('x',65535),'z'), (REPEAT('x',65535),'aa'),
|
||||
-(REPEAT('x',16111),'bb'), (REPEAT('x',4805),'cc'),
|
||||
-(REPEAT('x',65535),'dd');
|
||||
-DROP TABLE t1;
|
||||
# End of 10.11 tests
|
||||
|
@@ -1,4 +1,6 @@
|
||||
@@ -377,8 +377,6 @@
|
||||
--- insert_into_empty.result
|
||||
+++ insert_into_empty,64k.result
|
||||
@@ -446,12 +446,9 @@
|
||||
c09 text, c10 text, c11 text, c12 text) ENGINE=InnoDB;
|
||||
SET GLOBAL INNODB_DEFAULT_ROW_FORMAT= COMPACT;
|
||||
ALTER TABLE t1 FORCE;
|
||||
@@ -7,3 +9,7 @@
|
||||
INSERT IGNORE INTO t1 VALUES
|
||||
(1, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107)),
|
||||
(2, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107));
|
||||
-ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
|
38
mysql-test/suite/innodb/r/insert_into_empty,8k.rdiff
Normal file
38
mysql-test/suite/innodb/r/insert_into_empty,8k.rdiff
Normal file
@@ -0,0 +1,38 @@
|
||||
--- insert_into_empty.result
|
||||
+++ insert_into_empty,8k.result
|
||||
@@ -451,7 +451,7 @@
|
||||
INSERT IGNORE INTO t1 VALUES
|
||||
(1, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107)),
|
||||
(2, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107));
|
||||
-ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
+ERROR 42000: Row size too large (> 4030). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
@@ -541,26 +541,4 @@
|
||||
DELETE FROM t1;
|
||||
commit;
|
||||
DROP TABLE t1;
|
||||
-#
|
||||
-# MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
-# failed in cmp_rec_rec_simple_field
|
||||
-#
|
||||
-CREATE TABLE t1(a BLOB, b VARCHAR(2048), PRIMARY KEY (b)) ENGINE=InnoDB;
|
||||
-INSERT INTO t1 VALUES (REPEAT('x',4805),'a'), (REPEAT('x',16111),'b'),
|
||||
-(REPEAT('x',65535),'c'), (REPEAT('x',11312),'d'),
|
||||
-(REPEAT('x',35177),'e'), (REPEAT('x',65535),'f'),
|
||||
-(REPEAT('x',1988),'g'), (NULL,REPEAT('x',2048)),
|
||||
-(REPEAT('x',2503),'h'), (REPEAT('x',33152),'i'),
|
||||
-(REPEAT('x',65535),'j'), (REPEAT('x',1988),'k'),
|
||||
-(REPEAT('x',65535),'l'), (REPEAT('x',65535),'m'),
|
||||
-(REPEAT('x',65535),'n'), (REPEAT('x',65535),'o'),
|
||||
-(REPEAT('x',1988),'p'), (REPEAT('x',2503),'q'),
|
||||
-(REPEAT('x',65535),'r'), (REPEAT('x',65535),'s'),
|
||||
-(REPEAT('x',65535),'t'), (REPEAT('x',3169),'u'),
|
||||
-(REPEAT('x',7071),'v'), (REPEAT('x',16111),'w'),
|
||||
-(REPEAT('x',2325),'x'), (REPEAT('x',33152),'y'),
|
||||
-(REPEAT('x',65535),'z'), (REPEAT('x',65535),'aa'),
|
||||
-(REPEAT('x',16111),'bb'), (REPEAT('x',4805),'cc'),
|
||||
-(REPEAT('x',65535),'dd');
|
||||
-DROP TABLE t1;
|
||||
# End of 10.11 tests
|
@@ -451,6 +451,7 @@ Warning 139 Row size too large (> 8126). Changing some columns to TEXT or BLOB o
|
||||
INSERT IGNORE INTO t1 VALUES
|
||||
(1, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107)),
|
||||
(2, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107));
|
||||
ERROR 42000: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
@@ -540,4 +541,26 @@ INSERT INTO t1 VALUES(2,0);
|
||||
DELETE FROM t1;
|
||||
commit;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
# failed in cmp_rec_rec_simple_field
|
||||
#
|
||||
CREATE TABLE t1(a BLOB, b VARCHAR(2048), PRIMARY KEY (b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (REPEAT('x',4805),'a'), (REPEAT('x',16111),'b'),
|
||||
(REPEAT('x',65535),'c'), (REPEAT('x',11312),'d'),
|
||||
(REPEAT('x',35177),'e'), (REPEAT('x',65535),'f'),
|
||||
(REPEAT('x',1988),'g'), (NULL,REPEAT('x',2048)),
|
||||
(REPEAT('x',2503),'h'), (REPEAT('x',33152),'i'),
|
||||
(REPEAT('x',65535),'j'), (REPEAT('x',1988),'k'),
|
||||
(REPEAT('x',65535),'l'), (REPEAT('x',65535),'m'),
|
||||
(REPEAT('x',65535),'n'), (REPEAT('x',65535),'o'),
|
||||
(REPEAT('x',1988),'p'), (REPEAT('x',2503),'q'),
|
||||
(REPEAT('x',65535),'r'), (REPEAT('x',65535),'s'),
|
||||
(REPEAT('x',65535),'t'), (REPEAT('x',3169),'u'),
|
||||
(REPEAT('x',7071),'v'), (REPEAT('x',16111),'w'),
|
||||
(REPEAT('x',2325),'x'), (REPEAT('x',33152),'y'),
|
||||
(REPEAT('x',65535),'z'), (REPEAT('x',65535),'aa'),
|
||||
(REPEAT('x',16111),'bb'), (REPEAT('x',4805),'cc'),
|
||||
(REPEAT('x',65535),'dd');
|
||||
DROP TABLE t1;
|
||||
# End of 10.11 tests
|
||||
|
@@ -83,4 +83,29 @@ CREATE TABLE t engine=innodb
|
||||
SELECT t2.f2 FROM t2 JOIN t1 ON t1.f1 = t2.f1 AND t1.f3 = '' AND t1.f2=1 ;
|
||||
SELECT COUNT(*) FROM t;
|
||||
DROP TABLE t1, t2, t;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
--echo # failed in cmp_rec_rec_simple_field
|
||||
--echo #
|
||||
CREATE TABLE t1(a BLOB, b VARCHAR(2048), PRIMARY KEY (b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES
|
||||
(REPEAT('x',4805),'a'), (REPEAT('x',16111),'b'),
|
||||
(REPEAT('x',65535),'c'), (REPEAT('x',11312),'d'),
|
||||
(REPEAT('x',35177),'e'), (REPEAT('x',65535),'f'),
|
||||
(REPEAT('x',1988),'g'), (NULL,REPEAT('x',2048)),
|
||||
(REPEAT('x',2503),'h'), (REPEAT('x',33152),'i'),
|
||||
(REPEAT('x',65535),'j'), (REPEAT('x',1988),'k'),
|
||||
(REPEAT('x',65535),'l'), (REPEAT('x',65535),'m'),
|
||||
(REPEAT('x',65535),'n'), (REPEAT('x',65535),'o'),
|
||||
(REPEAT('x',1988),'p'), (REPEAT('x',2503),'q'),
|
||||
(REPEAT('x',65535),'r'), (REPEAT('x',65535),'s'),
|
||||
(REPEAT('x',65535),'t'), (REPEAT('x',3169),'u'),
|
||||
(REPEAT('x',7071),'v'), (REPEAT('x',16111),'w'),
|
||||
(REPEAT('x',2325),'x'), (REPEAT('x',33152),'y'),
|
||||
(REPEAT('x',65535),'z'), (REPEAT('x',65535),'aa'),
|
||||
(REPEAT('x',16111),'bb'), (REPEAT('x',4805),'cc'),
|
||||
(REPEAT('x',65535),'dd');
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=COPY;
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_stats_persistent=@default_stats_persistent;
|
||||
|
1
mysql-test/suite/innodb/t/innodb-64k-crash.opt
Normal file
1
mysql-test/suite/innodb/t/innodb-64k-crash.opt
Normal file
@@ -0,0 +1 @@
|
||||
--innodb_sort_buffer_size=65536
|
@@ -2,6 +2,7 @@
|
||||
--source include/have_innodb_64k.inc
|
||||
# Embedded server does not support restarting
|
||||
--source include/not_embedded.inc
|
||||
--source innodb_default_row_format.inc
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
@@ -314,3 +315,64 @@ connection default;
|
||||
|
||||
check table t1,t2;
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
--echo # failed in cmp_rec_rec_simple_field
|
||||
--echo #
|
||||
let $row_format= `select @@global.innodb_default_row_format`;
|
||||
if ($row_format != "redundant")
|
||||
{
|
||||
CREATE TABLE t1(f1 int not null, f2 text, f3 text, f4 text,
|
||||
f5 text, f6 text, f7 text, f8 text,
|
||||
f9 text, f10 text, f11 text, f12 text,
|
||||
f13 text, f14 text, f15 text, f16 text,
|
||||
f17 text, f18 text, f19 text, f20 text,
|
||||
f21 text, f22 text, f23 text, f24 text,
|
||||
f25 text, PRIMARY KEY(f1))ENGINE=InnoDB;
|
||||
let $error_code = ER_TOO_BIG_ROWSIZE;
|
||||
if ($row_format == "dynamic")
|
||||
{
|
||||
let $error_code = 0;
|
||||
}
|
||||
|
||||
--error $error_code
|
||||
SET STATEMENT unique_checks=0,foreign_key_checks=0 FOR
|
||||
INSERT INTO t1 VALUES(1, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
REPEAT('w', 1024), REPEAT('x', 1024)),
|
||||
(2, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
REPEAT('w', 1024), REPEAT('x', 1024)),
|
||||
(3, REPEAT('a', 1024), REPEAT('b', 1024),
|
||||
REPEAT('c', 1024), REPEAT('d', 1024),
|
||||
REPEAT('e', 1024), REPEAT('f', 1024),
|
||||
REPEAT('g', 4096), REPEAT('h', 1024),
|
||||
REPEAT('i', 1024), REPEAT('j', 1024),
|
||||
REPEAT('k', 1024), REPEAT('l', 1024),
|
||||
REPEAT('m', 1024), REPEAT('n', 1024),
|
||||
REPEAT('o', 1024), REPEAT('p', 1024),
|
||||
REPEAT('q', 1024), REPEAT('r', 1024),
|
||||
REPEAT('s', 1024), REPEAT('t', 1024),
|
||||
REPEAT('u', 1024), REPEAT('v', 1024),
|
||||
REPEAT('w', 1024), REPEAT('x', 1024));
|
||||
DROP TABLE t1;
|
||||
}
|
||||
|
@@ -484,7 +484,7 @@ ALTER TABLE t1 FORCE;
|
||||
let $page_size= `SELECT @@innodb_page_size`;
|
||||
let $error_code = 0;
|
||||
|
||||
if ($page_size == 4096) {
|
||||
if ($page_size <= 16384) {
|
||||
let $error_code = ER_TOO_BIG_ROWSIZE;
|
||||
}
|
||||
|
||||
@@ -593,4 +593,30 @@ INSERT INTO t1 VALUES(2,0);
|
||||
DELETE FROM t1;
|
||||
commit;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
if ($page_size >= 16384) {
|
||||
--echo #
|
||||
--echo # MDEV-35475 Assertion `!rec_offs_nth_extern(offsets1, n)'
|
||||
--echo # failed in cmp_rec_rec_simple_field
|
||||
--echo #
|
||||
CREATE TABLE t1(a BLOB, b VARCHAR(2048), PRIMARY KEY (b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (REPEAT('x',4805),'a'), (REPEAT('x',16111),'b'),
|
||||
(REPEAT('x',65535),'c'), (REPEAT('x',11312),'d'),
|
||||
(REPEAT('x',35177),'e'), (REPEAT('x',65535),'f'),
|
||||
(REPEAT('x',1988),'g'), (NULL,REPEAT('x',2048)),
|
||||
(REPEAT('x',2503),'h'), (REPEAT('x',33152),'i'),
|
||||
(REPEAT('x',65535),'j'), (REPEAT('x',1988),'k'),
|
||||
(REPEAT('x',65535),'l'), (REPEAT('x',65535),'m'),
|
||||
(REPEAT('x',65535),'n'), (REPEAT('x',65535),'o'),
|
||||
(REPEAT('x',1988),'p'), (REPEAT('x',2503),'q'),
|
||||
(REPEAT('x',65535),'r'), (REPEAT('x',65535),'s'),
|
||||
(REPEAT('x',65535),'t'), (REPEAT('x',3169),'u'),
|
||||
(REPEAT('x',7071),'v'), (REPEAT('x',16111),'w'),
|
||||
(REPEAT('x',2325),'x'), (REPEAT('x',33152),'y'),
|
||||
(REPEAT('x',65535),'z'), (REPEAT('x',65535),'aa'),
|
||||
(REPEAT('x',16111),'bb'), (REPEAT('x',4805),'cc'),
|
||||
(REPEAT('x',65535),'dd');
|
||||
DROP TABLE t1;
|
||||
}
|
||||
--echo # End of 10.11 tests
|
||||
|
Reference in New Issue
Block a user