mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
MDEV-21608 Assertion `n_ext == dtuple_get_n_ext(dtuple)' failed during updation of PK
- n_ext value may be less than dtuple_get_n_ext(dtuple) when PK is being updated and new record inherits the externally stored fields from delete mark old record.
This commit is contained in:
parent
ebbc572b82
commit
3be751d5b9
3 changed files with 18 additions and 1 deletions
|
@ -153,3 +153,9 @@ a
|
|||
SELECT * FROM t2;
|
||||
a
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 TEXT)ENGINE=InnoDB
|
||||
ROW_FORMAT=REDUNDANT;
|
||||
SET @fill_amount = (@@innodb_page_size / 2 ) + 1 ;
|
||||
INSERT INTO t1 VALUES(1, REPEAT(2, @fill_amount));
|
||||
UPDATE t1 SET f1 = 2;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -206,3 +206,10 @@ SELECT a FROM t3;
|
|||
SELECT * FROM t2;
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 TEXT)ENGINE=InnoDB
|
||||
ROW_FORMAT=REDUNDANT;
|
||||
SET @fill_amount = (@@innodb_page_size / 2 ) + 1 ;
|
||||
INSERT INTO t1 VALUES(1, REPEAT(2, @fill_amount));
|
||||
UPDATE t1 SET f1 = 2;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -1626,7 +1626,11 @@ rec_get_converted_size(
|
|||
|
||||
data_size = dtuple_get_data_size(dtuple, 0);
|
||||
|
||||
ut_ad(n_ext == dtuple_get_n_ext(dtuple));
|
||||
/* If primary key is being updated then the new record inherits
|
||||
externally stored fields from the delete-marked old record.
|
||||
In that case, n_ext may be less value than
|
||||
dtuple_get_n_ext(tuple). */
|
||||
ut_ad(n_ext <= dtuple_get_n_ext(dtuple));
|
||||
extra_size = rec_get_converted_extra_size(
|
||||
data_size, dtuple_get_n_fields(dtuple), n_ext);
|
||||
|
||||
|
|
Loading…
Reference in a new issue