mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-26956 LeakSanitizer/Valgrind errors in trx_mod_table_time_t::start_bulk_insert upon adding system versioning
InnoDB fails to apply buffered insert operation for 'mysql/transaction_registry' table during system versioning DDL. To avoid this, DDL calls extra(HA_EXTRA_IGNORE_INSERT) to inform the InnoDB for applying the buffered insert operation.
This commit is contained in:
@@ -211,3 +211,14 @@ c c2
|
|||||||
DELETE FROM t;
|
DELETE FROM t;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
#
|
||||||
|
# MDEV-26956 LeakSanitizer/Valgrind errors in
|
||||||
|
# trx_mod_table_time_t::start_bulk_insert
|
||||||
|
# upon adding system versioning
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(id INT, s DATE, e DATE, PERIOD FOR p(s,e),
|
||||||
|
PRIMARY KEY(id, p WITHOUT OVERLAPS)) ENGINE=InnoDB;
|
||||||
|
ALTER TABLE t1 ADD COLUMN row_start BIGINT UNSIGNED AS ROW START,
|
||||||
|
ADD COLUMN row_end BIGINT UNSIGNED AS ROW END,
|
||||||
|
ADD PERIOD FOR SYSTEM_TIME(row_start,row_end), WITH SYSTEM VERSIONING;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -221,3 +221,15 @@ SELECT * FROM t;
|
|||||||
DELETE FROM t;
|
DELETE FROM t;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-26956 LeakSanitizer/Valgrind errors in
|
||||||
|
--echo # trx_mod_table_time_t::start_bulk_insert
|
||||||
|
--echo # upon adding system versioning
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1(id INT, s DATE, e DATE, PERIOD FOR p(s,e),
|
||||||
|
PRIMARY KEY(id, p WITHOUT OVERLAPS)) ENGINE=InnoDB;
|
||||||
|
ALTER TABLE t1 ADD COLUMN row_start BIGINT UNSIGNED AS ROW START,
|
||||||
|
ADD COLUMN row_end BIGINT UNSIGNED AS ROW END,
|
||||||
|
ADD PERIOD FOR SYSTEM_TIME(row_start,row_end), WITH SYSTEM VERSIONING;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -9711,6 +9711,9 @@ bool TR_table::update(ulonglong start_id, ulonglong end_id)
|
|||||||
int error= table->file->ha_write_row(table->record[0]);
|
int error= table->file->ha_write_row(table->record[0]);
|
||||||
if (unlikely(error))
|
if (unlikely(error))
|
||||||
table->file->print_error(error, MYF(0));
|
table->file->print_error(error, MYF(0));
|
||||||
|
/* extra() is used to apply the bulk insert operation
|
||||||
|
on mysql/transaction_registry table */
|
||||||
|
table->file->extra(HA_EXTRA_IGNORE_INSERT);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user