mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
376bf4ede5
Similar to what was done in commit aa3f7a107c
for FULLTEXT INDEX, we must ensure that MLOG_INDEX_LOAD records will always
be written if redo logging was disabled.
row_merge_build_indexes(): Invoke row_merge_write_redo() also when
online operation is not being executed or an error occurs.
In case of an error, invoke flush_observer->interrupted() so that
the pages will not be flushed but merely evicted from the buffer pool.
Before resuming redo logging, it is crucial for the correctness of
mariabackup and InnoDB crash recovery to flush or evict all affected pages
and to write MLOG_INDEX_LOAD records.
47 lines
1.5 KiB
Text
47 lines
1.5 KiB
Text
--source include/have_innodb.inc
|
|
--source include/have_debug.inc
|
|
|
|
# Embedded server does not support crashing
|
|
--source include/not_embedded.inc
|
|
|
|
# start afresh
|
|
--source include/restart_mysqld.inc
|
|
|
|
--echo #
|
|
--echo # Bug#21801423 INNODB REDO LOG DOES NOT INDICATE WHEN
|
|
--echo # FILES ARE CREATED
|
|
--echo #
|
|
--echo # Bug#21796691 INNODB REDO LOG DOES NOT INDICATE WHEN
|
|
--echo # REDO LOGGING IS SKIPPED
|
|
--echo #
|
|
--source include/no_checkpoint_start.inc
|
|
CREATE TABLE t1 (a INT NOT NULL, b INT UNIQUE) ENGINE=InnoDB;
|
|
# MLOG_INDEX_LOAD will not be emitted for empty tables. Insert a row.
|
|
INSERT INTO t1 VALUES (1,2);
|
|
# We should get two MLOG_INDEX_LOAD for this.
|
|
ALTER TABLE t1 ADD PRIMARY KEY(a), LOCK=SHARED, ALGORITHM=INPLACE;
|
|
# And one MLOG_INDEX_LOAD for this.
|
|
ALTER TABLE t1 DROP INDEX b, ADD INDEX (b), LOCK=SHARED;
|
|
|
|
--let CLEANUP_IF_CHECKPOINT=DROP TABLE t1;
|
|
--source include/no_checkpoint_end.inc
|
|
|
|
--let $restart_parameters= --debug=d,ib_log
|
|
--source include/start_mysqld.inc
|
|
|
|
let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
|
let SEARCH_ABORT=NOT FOUND;
|
|
# ensure that we have exactly 2 records there.
|
|
let SEARCH_PATTERN=scan \d+: multi-log rec MLOG_FILE_CREATE2 len \d+ page \d+:0;
|
|
--source include/search_pattern_in_file.inc
|
|
# ensure that we have exactly 3 records there.
|
|
let SEARCH_PATTERN=scan \d+: log rec MLOG_INDEX_LOAD;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
CHECK TABLE t1;
|
|
|
|
# Remove the --debug=d,ib_log setting.
|
|
--let $restart_parameters=
|
|
--source include/restart_mysqld.inc
|
|
|
|
DROP TABLE t1;
|