mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-30426 Assertion !rec_offs_nth_extern(offsets2, n) during bulk insert
- cmp_rec_rec_simple() fails to detect duplicate key error for bulk insert operation
This commit is contained in:
@ -405,3 +405,21 @@ nb_corrupted_rows
|
||||
0
|
||||
DROP TABLE t1;
|
||||
# End of 10.7 tests
|
||||
#
|
||||
# MDEV-30426 Assertion !rec_offs_nth_extern(offsets2, n)
|
||||
# during bulk insert
|
||||
#
|
||||
CREATE TABLE t1(f1 TEXT NOT NULL, f2 TEXT NOT NULL,
|
||||
f3 TEXT NOT NULL, f4 TEXT NOT NULL,
|
||||
f5 TEXT NOT NULL, f6 TEXT NOT NULL,
|
||||
PRIMARY KEY(f6(10)))ENGINE=InnoDB;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES
|
||||
(repeat('a', 200), repeat('b', 200), repeat('c', 200),
|
||||
repeat('d', 200), repeat('e', 200), repeat('f', 200)),
|
||||
(repeat('b', 20000), repeat('c', 16000), repeat('d', 12000),
|
||||
repeat('e', 12000), repeat('f', 12000), repeat('f', 12000));
|
||||
ERROR HY000: Got error 1 "Operation not permitted" during COMMIT
|
||||
COMMIT;
|
||||
DROP TABLE t1;
|
||||
# End of 10.8 tests
|
||||
|
1
mysql-test/suite/innodb/t/insert_into_empty.opt
Normal file
1
mysql-test/suite/innodb/t/insert_into_empty.opt
Normal file
@ -0,0 +1 @@
|
||||
--innodb_sort_buffer_size=65536
|
@ -424,3 +424,22 @@ SELECT COUNT(*) AS nb_corrupted_rows FROM t1 WHERE data != REPEAT('X', @@innodb_
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # End of 10.7 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30426 Assertion !rec_offs_nth_extern(offsets2, n)
|
||||
--echo # during bulk insert
|
||||
--echo #
|
||||
CREATE TABLE t1(f1 TEXT NOT NULL, f2 TEXT NOT NULL,
|
||||
f3 TEXT NOT NULL, f4 TEXT NOT NULL,
|
||||
f5 TEXT NOT NULL, f6 TEXT NOT NULL,
|
||||
PRIMARY KEY(f6(10)))ENGINE=InnoDB;
|
||||
BEGIN;
|
||||
--error ER_ERROR_DURING_COMMIT
|
||||
INSERT INTO t1 VALUES
|
||||
(repeat('a', 200), repeat('b', 200), repeat('c', 200),
|
||||
repeat('d', 200), repeat('e', 200), repeat('f', 200)),
|
||||
(repeat('b', 20000), repeat('c', 16000), repeat('d', 12000),
|
||||
repeat('e', 12000), repeat('f', 12000), repeat('f', 12000));
|
||||
COMMIT;
|
||||
DROP TABLE t1;
|
||||
--echo # End of 10.8 tests
|
||||
|
@ -725,9 +725,12 @@ cmp_rec_rec_simple(
|
||||
/* If we ran out of fields, the ordering columns of rec1 were
|
||||
equal to rec2. Issue a duplicate key error if needed. */
|
||||
|
||||
if (!null_eq && table && dict_index_is_unique(index)) {
|
||||
/* Report erroneous row using new version of table. */
|
||||
if (!null_eq && index->is_unique()) {
|
||||
if (table) {
|
||||
/* Report erroneous row using new version
|
||||
of table. */
|
||||
innobase_rec_to_mysql(table, rec1, index, offsets1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user