summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-03-11 09:53:40 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2022-03-11 09:53:40 +0200
commitbe6f9593feb368cbcb27c191389fe9723ab3045c (patch)
treead13136bff5ad59e4a987f41451b4ceccb2b8a2d
parentfabaac86a18cfa026ca53b4a62e9edbf0bfd32d4 (diff)
parent5503c4046053a2d0b8c4cd2d331d0bfa25b50e98 (diff)
downloadmariadb-git-be6f9593feb368cbcb27c191389fe9723ab3045c.tar.gz
Merge 10.5 into 10.6
-rw-r--r--CMakeLists.txt4
-rwxr-xr-xdebian/autobake-deb.sh9
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result13
-rw-r--r--mysql-test/suite/binlog/r/innodb_autoinc_lock_mode_binlog.result33
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test14
-rw-r--r--mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.opt1
-rw-r--r--mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.test21
-rw-r--r--mysql-test/suite/innodb/r/redo_log_during_checkpoint.result6
-rw-r--r--mysql-test/suite/innodb/t/redo_log_during_checkpoint.test15
-rw-r--r--mysql-test/suite/sql_sequence/binlog.result25
-rw-r--r--mysql-test/suite/sql_sequence/binlog.test15
-rw-r--r--sql/handler.h5
-rw-r--r--sql/sql_class.cc12
-rw-r--r--sql/sql_lex.cc9
-rw-r--r--sql/sql_lex.h7
-rw-r--r--storage/innobase/handler/ha_innodb.cc8
-rw-r--r--storage/innobase/handler/ha_innodb.h4
-rw-r--r--storage/innobase/log/log0log.cc4
18 files changed, 175 insertions, 30 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b9cf961f523..eeee9f7e986 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
# Copyright (c) 2006, 2017, Oracle and/or its affiliates.
-# Copyright (c) 2008, 2021, MariaDB Corporation.
+# Copyright (c) 2008, 2022, MariaDB Corporation.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -80,9 +80,11 @@ SET(MYSQL_PROJECT_NAME_DOCSTRING "MySQL project name")
IF(CMAKE_VERSION VERSION_LESS "3.1")
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
ENDIF()
ELSE()
+ SET(CMAKE_C_STANDARD 99)
SET(CMAKE_CXX_STANDARD 11)
ENDIF()
diff --git a/debian/autobake-deb.sh b/debian/autobake-deb.sh
index 46686827b94..29666d89b0e 100755
--- a/debian/autobake-deb.sh
+++ b/debian/autobake-deb.sh
@@ -11,6 +11,14 @@
# Exit immediately on any error
set -e
+CODENAME="$(lsb_release -sc)"
+case "${CODENAME}" in
+ stretch)
+ # MDEV-28022 libzstd-dev-1.1.3 minimum version
+ sed -i -e '/libzstd-dev/d' debian/control
+ ;;
+esac
+
# This file is invoked from Buildbot and Travis-CI to build deb packages.
# As both of those CI systems have many parallel jobs that include different
# parts of the test suite, we don't need to run the mysql-test-run at all when
@@ -96,7 +104,6 @@ source ./VERSION
UPSTREAM="${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}"
PATCHLEVEL="+maria"
LOGSTRING="MariaDB build"
-CODENAME="$(lsb_release -sc)"
EPOCH="1:"
VERSION="${EPOCH}${UPSTREAM}${PATCHLEVEL}~${CODENAME}"
diff --git a/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result b/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
index 135271d325e..971fae6208f 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
@@ -104,6 +104,17 @@ Note 1592 Unsafe statement written to the binary log using statement format sinc
SHOW WARNINGS;
Level Code Message
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly
+CREATE TABLE t3 (a INT(11) DEFAULT NULL);
+INSERT INTO t3 VALUES (1);
+CREATE TABLE t4 (a INT(11) DEFAULT NULL, b BIGINT(20) DEFAULT uuid_short()) SELECT * FROM t3;
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
+SHOW WARNINGS;
+Level Code Message
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
+CREATE OR REPLACE TABLE t4 (a INT(11) DEFAULT NULL) SELECT * FROM t3;
+SHOW WARNINGS;
+Level Code Message
DROP FUNCTION sf_bug50192;
DROP TRIGGER tr_bug50192;
-DROP TABLE t1, t2;
+DROP TABLE t1, t2, t3, t4;
diff --git a/mysql-test/suite/binlog/r/innodb_autoinc_lock_mode_binlog.result b/mysql-test/suite/binlog/r/innodb_autoinc_lock_mode_binlog.result
new file mode 100644
index 00000000000..d0132931968
--- /dev/null
+++ b/mysql-test/suite/binlog/r/innodb_autoinc_lock_mode_binlog.result
@@ -0,0 +1,33 @@
+call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
+select @@innodb_autoinc_lock_mode;
+@@innodb_autoinc_lock_mode
+2
+select @@binlog_format;
+@@binlog_format
+MIXED
+create table t1 (a int not null auto_increment,b int, primary key (a)) engine=InnoDB;
+insert into t1 values (NULL,1);
+include/show_binlog_events.inc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Gtid # # BEGIN GTID #-#-#
+master-bin.000001 # Query # # use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT' COLLATE 'latin1_swedish_ci'))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment,b int, primary key (a)) engine=InnoDB
+master-bin.000001 # Gtid # # BEGIN GTID #-#-#
+master-bin.000001 # Annotate_rows # # insert into t1 values (NULL,1)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+set global binlog_format=STATEMENT;
+connect con1,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
+insert into t1 values (NULL,1);
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
+insert into t1 values (NULL,1);
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
+disconnect con1;
+connection default;
+set global binlog_format=MIXED;
+DROP TABLE t1;
diff --git a/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test b/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
index 70566da4cfa..578f0ff5fc8 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
+++ b/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
@@ -189,8 +189,20 @@ SHOW WARNINGS;
SELECT sf_bug50192();
SHOW WARNINGS;
+# The test proves MDEV-24617 fixes leave in force
+# unsafe warnings in non-deterministic CREATE..SELECT cases.
+# Below an inserted default value to `b` of the target table is replication
+# unsafe. A warning must be out.
+CREATE TABLE t3 (a INT(11) DEFAULT NULL);
+INSERT INTO t3 VALUES (1);
+CREATE TABLE t4 (a INT(11) DEFAULT NULL, b BIGINT(20) DEFAULT uuid_short()) SELECT * FROM t3;
+SHOW WARNINGS;
+# no warning out of a deterministic "rhs" of SELECT
+CREATE OR REPLACE TABLE t4 (a INT(11) DEFAULT NULL) SELECT * FROM t3;
+SHOW WARNINGS;
+
# cleanup
DROP FUNCTION sf_bug50192;
DROP TRIGGER tr_bug50192;
-DROP TABLE t1, t2;
+DROP TABLE t1, t2, t3, t4;
diff --git a/mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.opt b/mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.opt
new file mode 100644
index 00000000000..824f656cbd5
--- /dev/null
+++ b/mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.opt
@@ -0,0 +1 @@
+--innodb_autoinc_lock_mode=2
diff --git a/mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.test b/mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.test
new file mode 100644
index 00000000000..a7d43db4c1b
--- /dev/null
+++ b/mysql-test/suite/binlog/t/innodb_autoinc_lock_mode_binlog.test
@@ -0,0 +1,21 @@
+--source include/have_innodb.inc
+--source include/have_binlog_format_mixed.inc
+
+call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
+
+select @@innodb_autoinc_lock_mode;
+select @@binlog_format;
+
+create table t1 (a int not null auto_increment,b int, primary key (a)) engine=InnoDB;
+insert into t1 values (NULL,1);
+--source include/show_binlog_events.inc
+
+set global binlog_format=STATEMENT;
+--connect (con1,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK)
+insert into t1 values (NULL,1);
+insert into t1 values (NULL,1);
+--disconnect con1
+--connection default
+
+set global binlog_format=MIXED;
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/r/redo_log_during_checkpoint.result b/mysql-test/suite/innodb/r/redo_log_during_checkpoint.result
index e95ca52b173..a924ff711da 100644
--- a/mysql-test/suite/innodb/r/redo_log_during_checkpoint.result
+++ b/mysql-test/suite/innodb/r/redo_log_during_checkpoint.result
@@ -5,10 +5,7 @@ SET GLOBAL innodb_log_checkpoint_now = 1;
CREATE DATABASE very_long_database_name;
USE very_long_database_name;
SET debug_dbug = '+d,increase_mtr_checkpoint_size';
-SET debug_dbug = '+d,crash_after_checkpoint';
set global innodb_log_checkpoint_now = 1;
-ERROR HY000: Lost connection to server during query
-# Skip MLOG_FILE_NAME redo records during recovery
DROP DATABASE very_long_database_name;
SET GLOBAL innodb_flush_sync=OFF;
SET GLOBAL innodb_page_cleaner_disabled_debug = 1;
@@ -19,8 +16,5 @@ SET GLOBAL innodb_log_checkpoint_now = 1;
# exceeds LOG_CHECKPOINT_FREE_PER_THREAD size during checkpoint.
CREATE DATABASE very_long_database_name;
USE very_long_database_name;
-SET debug_dbug = '+d,crash_after_checkpoint';
set global innodb_log_checkpoint_now = 1;
-ERROR HY000: Lost connection to server during query
-# Skip MLOG_FILE_NAME redo records during recovery
DROP DATABASE very_long_database_name;
diff --git a/mysql-test/suite/innodb/t/redo_log_during_checkpoint.test b/mysql-test/suite/innodb/t/redo_log_during_checkpoint.test
index 40b412ac9bb..0119089f688 100644
--- a/mysql-test/suite/innodb/t/redo_log_during_checkpoint.test
+++ b/mysql-test/suite/innodb/t/redo_log_during_checkpoint.test
@@ -3,9 +3,6 @@
--source include/big_test.inc
# Embedded server tests do not support restarting
--source include/not_embedded.inc
-# We are crashing the server on purpose
---source include/not_valgrind.inc
---source include/not_crashrep.inc
# This often fails under MSAN builder due timing differences
--source include/not_msan.inc
@@ -37,12 +34,10 @@ while ($i)
--exec echo "wait" > $_expect_file_name
SET debug_dbug = '+d,increase_mtr_checkpoint_size';
-SET debug_dbug = '+d,crash_after_checkpoint';
---error 2013
set global innodb_log_checkpoint_now = 1;
---echo # Skip MLOG_FILE_NAME redo records during recovery
---source include/start_mysqld.inc
+--let $restart_timeout=0
+--source include/restart_mysqld.inc
DROP DATABASE very_long_database_name;
@@ -67,13 +62,9 @@ while ($i)
}
--enable_query_log
---exec echo "wait" > $_expect_file_name
-SET debug_dbug = '+d,crash_after_checkpoint';
---error 2013
set global innodb_log_checkpoint_now = 1;
---echo # Skip MLOG_FILE_NAME redo records during recovery
--let $restart_parameters = --debug-dbug=d,reduce_recv_parsing_buf
---source include/start_mysqld.inc
+--source include/restart_mysqld.inc
DROP DATABASE very_long_database_name;
diff --git a/mysql-test/suite/sql_sequence/binlog.result b/mysql-test/suite/sql_sequence/binlog.result
index f01b3234e96..843cf74c2fa 100644
--- a/mysql-test/suite/sql_sequence/binlog.result
+++ b/mysql-test/suite/sql_sequence/binlog.result
@@ -12,6 +12,21 @@ select next value for s1, minimum_value from s1 where maximum_value> 4;
next value for s1 minimum_value
4 1
alter sequence s1 maxvalue 1000;
+optimize table s1;
+Table Op Msg_type Msg_text
+test.s1 optimize note The storage engine for the table doesn't support optimize
+analyze table s1;
+Table Op Msg_type Msg_text
+test.s1 analyze status Engine-independent statistics collected
+test.s1 analyze note The storage engine for the table doesn't support analyze
+repair table s1;
+Table Op Msg_type Msg_text
+test.s1 repair status OK
+check table s1;
+Table Op Msg_type Msg_text
+test.s1 check note The storage engine for the table doesn't support check
+rename table s1 to tmp_s;
+rename table tmp_s to s1;
drop sequence s1;
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
@@ -30,4 +45,14 @@ master-bin.000001 # Query # # COMMIT
master-bin.000001 # Gtid # # GTID #-#-#
master-bin.000001 # Query # # use `test`; alter sequence s1 maxvalue 1000
master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; optimize table s1
+master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; analyze table s1
+master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; repair table s1
+master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; rename table s1 to tmp_s
+master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; rename table tmp_s to s1
+master-bin.000001 # Gtid # # GTID #-#-#
master-bin.000001 # Query # # use `test`; DROP SEQUENCE `s1` /* generated by server */
diff --git a/mysql-test/suite/sql_sequence/binlog.test b/mysql-test/suite/sql_sequence/binlog.test
index 5f2d52d7864..6a12e670a1e 100644
--- a/mysql-test/suite/sql_sequence/binlog.test
+++ b/mysql-test/suite/sql_sequence/binlog.test
@@ -1,5 +1,5 @@
---source include/have_udf.inc
---source include/have_log_bin.inc
+--source include/have_sequence.inc
+--source include/have_binlog_format_mixed_or_row.inc
--source include/binlog_start_pos.inc
#
@@ -21,6 +21,17 @@ select next value for s1, minimum_value from s1 where maximum_value> 4;
#
alter sequence s1 maxvalue 1000;
+# MDEV-24617 OPTIMIZE on a sequence causes unexpected
+# ER_BINLOG_UNSAFE_STATEMENT The test below verifies no unsafe
+# warnings anymore for any relavant commands that like OPTIMIZE can
+# not produce ROW format events therefore the unsafe warning either.
+optimize table s1;
+analyze table s1;
+repair table s1;
+check table s1;
+rename table s1 to tmp_s;
+rename table tmp_s to s1;
+
drop sequence s1;
--let $binlog_file = LAST
diff --git a/sql/handler.h b/sql/handler.h
index ab2608459f0..43a99a5d80f 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -5177,6 +5177,11 @@ public:
const uchar *pack_frm_data,
size_t pack_frm_len)
{ return HA_ERR_WRONG_COMMAND; }
+ /* @return true if it's necessary to switch current statement log format from
+ STATEMENT to ROW if binary log format is MIXED and autoincrement values
+ are changed in the statement */
+ virtual bool autoinc_lock_mode_stmt_unsafe() const
+ { return false; }
virtual int drop_partitions(const char *path)
{ return HA_ERR_WRONG_COMMAND; }
virtual int rename_partitions(const char *path)
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 0d5b957da74..c44d385a3a8 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -6242,6 +6242,10 @@ int THD::decide_logging_format(TABLE_LIST *tables)
bool is_write= FALSE; // If any write tables
bool has_read_tables= FALSE; // If any read only tables
bool has_auto_increment_write_tables= FALSE; // Write with auto-increment
+ /* true if it's necessary to switch current statement log format from
+ STATEMENT to ROW if binary log format is MIXED and autoincrement values
+ are changed in the statement */
+ bool has_unsafe_stmt_autoinc_lock_mode= false;
/* If a write table that doesn't have auto increment part first */
bool has_write_table_auto_increment_not_first_in_pk= FALSE;
bool has_auto_increment_write_tables_not_first= FALSE;
@@ -6364,6 +6368,8 @@ int THD::decide_logging_format(TABLE_LIST *tables)
has_auto_increment_write_tables_not_first= found_first_not_own_table;
if (share->next_number_keypart != 0)
has_write_table_auto_increment_not_first_in_pk= true;
+ has_unsafe_stmt_autoinc_lock_mode=
+ table->file->autoinc_lock_mode_stmt_unsafe();
}
}
@@ -6378,7 +6384,8 @@ int THD::decide_logging_format(TABLE_LIST *tables)
blackhole_table_found= 1;
if (share->non_determinstic_insert &&
- !(sql_command_flags[lex->sql_command] & CF_SCHEMA_CHANGE))
+ (sql_command_flags[lex->sql_command] & CF_CAN_GENERATE_ROW_EVENTS
+ && !(sql_command_flags[lex->sql_command] & CF_SCHEMA_CHANGE)))
has_write_tables_with_unsafe_statements= true;
trans= table->file->has_transactions();
@@ -6435,6 +6442,9 @@ int THD::decide_logging_format(TABLE_LIST *tables)
if (has_write_tables_with_unsafe_statements)
lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
+ if (has_unsafe_stmt_autoinc_lock_mode)
+ lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_AUTOINC_LOCK_MODE);
+
/*
A query that modifies autoinc column in sub-statement can make the
master and slave inconsistent.
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 3f86f209e6b..f013c4a7fd3 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2019, Oracle and/or its affiliates.
- Copyright (c) 2009, 2021, MariaDB Corporation.
+ Copyright (c) 2009, 2022, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -615,6 +615,13 @@ Query_tables_list::binlog_stmt_unsafe_errcode[BINLOG_STMT_UNSAFE_COUNT] =
ER_BINLOG_UNSAFE_UPDATE_IGNORE,
ER_BINLOG_UNSAFE_INSERT_TWO_KEYS,
ER_BINLOG_UNSAFE_AUTOINC_NOT_FIRST,
+ /*
+ There is no need to add new error code as we plan to get rid of auto
+ increment lock mode variable, so we use existing error code below, add
+ the correspondent text to the existing error message during merging to
+ non-GA release.
+ */
+ ER_BINLOG_UNSAFE_SYSTEM_VARIABLE,
ER_BINLOG_UNSAFE_SKIP_LOCKED
};
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index e782d2f8442..3a728268edf 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -1,5 +1,5 @@
/* Copyright (c) 2000, 2019, Oracle and/or its affiliates.
- Copyright (c) 2010, 2021, MariaDB Corporation
+ Copyright (c) 2010, 2022, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -1949,6 +1949,11 @@ public:
BINLOG_STMT_UNSAFE_AUTOINC_NOT_FIRST,
/**
+ Autoincrement lock mode is incompatible with STATEMENT binlog format.
+ */
+ BINLOG_STMT_UNSAFE_AUTOINC_LOCK_MODE,
+
+ /**
INSERT .. SELECT ... SKIP LOCKED is unlikely to have the same
rows locked on the replica.
primary key.
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index fd3d6e616fd..7b51c97b753 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -9261,6 +9261,14 @@ ha_innobase::change_active_index(
DBUG_RETURN(0);
}
+/* @return true if it's necessary to switch current statement log format from
+STATEMENT to ROW if binary log format is MIXED and autoincrement values
+are changed in the statement */
+bool ha_innobase::autoinc_lock_mode_stmt_unsafe() const
+{
+ return innobase_autoinc_lock_mode == AUTOINC_NO_LOCKING;
+}
+
/***********************************************************************//**
Reads the next or previous row from a cursor, which must have previously been
positioned using index_read.
diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h
index 08501859ec9..ca54785feed 100644
--- a/storage/innobase/handler/ha_innodb.h
+++ b/storage/innobase/handler/ha_innodb.h
@@ -462,6 +462,10 @@ protected:
int general_fetch(uchar* buf, uint direction, uint match_mode);
int change_active_index(uint keynr);
+ /* @return true if it's necessary to switch current statement log
+ format from STATEMENT to ROW if binary log format is MIXED and
+ autoincrement values are changed in the statement */
+ bool autoinc_lock_mode_stmt_unsafe() const;
dict_index_t* innobase_get_index(uint keynr);
#ifdef WITH_WSREP
diff --git a/storage/innobase/log/log0log.cc b/storage/innobase/log/log0log.cc
index 09f99a5cf02..db9d3664938 100644
--- a/storage/innobase/log/log0log.cc
+++ b/storage/innobase/log/log0log.cc
@@ -2,7 +2,7 @@
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2009, Google Inc.
-Copyright (c) 2014, 2021, MariaDB Corporation.
+Copyright (c) 2014, 2022, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -991,8 +991,6 @@ ATTRIBUTE_COLD void log_write_checkpoint_info(lsn_t end_lsn)
MONITOR_INC(MONITOR_NUM_CHECKPOINT);
- DBUG_EXECUTE_IF("crash_after_checkpoint", DBUG_SUICIDE(););
-
mysql_mutex_unlock(&log_sys.mutex);
}