Skip to content

Commit

Permalink
MDEV-26956 LeakSanitizer/Valgrind errors in trx_mod_table_time_t::sta…
Browse files Browse the repository at this point in the history
…rt_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.
  • Loading branch information
Thirunarayanan committed Nov 6, 2021
1 parent d20de4d commit 8c9cc2f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
11 changes: 11 additions & 0 deletions mysql-test/suite/innodb/r/insert_into_empty.result
Original file line number Diff line number Diff line change
Expand Up @@ -211,3 +211,14 @@ c c2
DELETE FROM t;
COMMIT;
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;
12 changes: 12 additions & 0 deletions mysql-test/suite/innodb/t/insert_into_empty.test
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,15 @@ SELECT * FROM t;
DELETE FROM t;
COMMIT;
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;
3 changes: 3 additions & 0 deletions sql/table.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9711,6 +9711,9 @@ bool TR_table::update(ulonglong start_id, ulonglong end_id)
int error= table->file->ha_write_row(table->record[0]);
if (unlikely(error))
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;
}

Expand Down

0 comments on commit 8c9cc2f

Please sign in to comment.