mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
0f90728bc0
Introduce the configuration option innodb_log_optimize_ddl for controlling whether native index creation or table-rebuild in InnoDB should keep optimizing the redo log (and writing MLOG_INDEX_LOAD records to ensure that concurrent backup would fail). By default, we have innodb_log_optimize_ddl=ON, that is, the default behaviour that was introduced in MariaDB 10.2.2 (with the merge of InnoDB from MySQL 5.7) will be unchanged. BtrBulk::m_trx: Replaces m_trx_id. We must be able to check for KILL QUERY even if !m_flush_observer (innodb_log_optimize_ddl=OFF). page_cur_insert_rec_write_log(): Declare globally, so that this can be called from PageBulk::insert(). row_merge_insert_index_tuples(): Remove the unused parameter trx_id. row_merge_build_indexes(): Enable or disable redo logging based on the innodb_log_optimize_ddl parameter. PageBulk::init(), PageBulk::insert(), PageBulk::finish(): Write redo log records if needed. For ROW_FORMAT=COMPRESSED, redo log will be written in PageBulk::compress() unless we called m_mtr.set_log_mode(MTR_LOG_NO_REDO).
47 lines
1.1 KiB
Text
47 lines
1.1 KiB
Text
# see unsupported_redo.test for the opposite (default) case
|
|
--source include/have_innodb.inc
|
|
--source include/have_sequence.inc
|
|
|
|
SET GLOBAL innodb_log_optimize_ddl=OFF;
|
|
|
|
CREATE TABLE tz(id BIGINT PRIMARY KEY, i INT)
|
|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
|
INSERT INTO tz(id) select * from seq_1_to_10000;
|
|
CREATE TABLE tr(id BIGINT PRIMARY KEY, i INT)
|
|
ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
|
INSERT INTO tr(id) select * from seq_1_to_10000;
|
|
CREATE TABLE td(id BIGINT PRIMARY KEY, i INT)
|
|
ENGINE=InnoDB;
|
|
INSERT INTO td(id) select * from seq_1_to_10000;
|
|
|
|
DELIMITER //;
|
|
CREATE PROCEDURE a()
|
|
BEGIN
|
|
ALTER TABLE tz ADD INDEX(i);
|
|
ALTER TABLE tr ADD INDEX(i);
|
|
ALTER TABLE td ADD INDEX(i);
|
|
END //
|
|
DELIMITER ;//
|
|
|
|
let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
|
|
|
|
send call a();
|
|
|
|
--disable_result_log
|
|
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir;
|
|
--enable_result_log
|
|
exec $XTRABACKUP --prepare --target-dir=$targetdir;
|
|
|
|
reap;
|
|
|
|
-- source include/restart_and_restore.inc
|
|
--rmdir $targetdir
|
|
|
|
DROP PROCEDURE a;
|
|
|
|
CHECK TABLE tz,tr,td;
|
|
SELECT COUNT(*) FROM tz;
|
|
SELECT COUNT(*) FROM tr;
|
|
SELECT COUNT(*) FROM td;
|
|
|
|
DROP TABLE tz,tr,td;
|