mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
26432e49d3
This patch contains a fix for the MDEV-17262/17243 issues and new mtr test. These issues (MDEV-17262/17243) have two reasons: 1) After an intermediate commit, a transaction loses its status of "transaction that registered in the MySQL for 2pc coordinator" (in the InnoDB) due to the fact that since version 10.2 the write_row() function (which located in the ha_innodb.cc) does not call trx_register_for_2pc(m_prebuilt->trx) during the processing of split transactions. It is necessary to restore this call inside the write_row() when an intermediate commit was made (for a split transaction). Similarly, we need to set the flag of the started transaction (m_prebuilt->sql_stat_start) after intermediate commit. The table->file->extra(HA_EXTRA_FAKE_START_STMT) called from the wsrep_load_data_split() function (which located in sql_load.cc) will also do this, but it will be too late. As a result, the call to the wsrep_append_keys() function from the InnoDB engine may be lost or function may be called with invalid transaction identifier. 2) If a transaction with the LOAD DATA statement is divided into logical mini-transactions (of the 10K rows) and binlog is rotated, then in rare cases due to the wsrep handler re-registration at the boundary of the split, the last portion of data may be lost. Since splitting of the LOAD DATA into mini-transactions is technical, I believe that we should not allow these mini-transactions to fall into separate binlogs. Therefore, it is necessary to prohibit the rotation of binlog in the middle of processing LOAD DATA statement. https://jira.mariadb.org/browse/MDEV-17262 and https://jira.mariadb.org/browse/MDEV-17243 |
||
---|---|---|
.. | ||
atomic | ||
mysql | ||
big_endian.h | ||
byte_order_generic.h | ||
byte_order_generic_x86.h | ||
byte_order_generic_x86_64.h | ||
CMakeLists.txt | ||
decimal.h | ||
dur_prop.h | ||
errmsg.h | ||
ft_global.h | ||
handler_ername.h | ||
handler_state.h | ||
hash.h | ||
heap.h | ||
json_lib.h | ||
keycache.h | ||
lf.h | ||
little_endian.h | ||
m_ctype.h | ||
m_string.h | ||
ma_dyncol.h | ||
maria.h | ||
my_alarm.h | ||
my_alloc.h | ||
my_atomic.h | ||
my_attribute.h | ||
my_base.h | ||
my_bit.h | ||
my_bitmap.h | ||
my_byteorder.h | ||
my_check_opt.h | ||
my_compare.h | ||
my_compiler.h | ||
my_context.h | ||
my_cpu.h | ||
my_crypt.h | ||
my_dbug.h | ||
my_decimal_limits.h | ||
my_default.h | ||
my_dir.h | ||
my_getopt.h | ||
my_global.h | ||
my_handler_errors.h | ||
my_libwrap.h | ||
my_list.h | ||
my_md5.h | ||
my_net.h | ||
my_nosys.h | ||
my_pthread.h | ||
my_rdtsc.h | ||
my_rnd.h | ||
my_service_manager.h | ||
my_stacktrace.h | ||
my_sys.h | ||
my_time.h | ||
my_tree.h | ||
my_uctype.h | ||
my_user.h | ||
my_valgrind.h | ||
my_xml.h | ||
myisam.h | ||
myisamchk.h | ||
myisammrg.h | ||
myisampack.h | ||
mysql.h | ||
mysql.h.pp | ||
mysql_async.h | ||
mysql_com.h | ||
mysql_com_server.h | ||
mysql_embed.h | ||
mysql_time.h | ||
mysql_version.h.in | ||
mysqld_default_groups.h | ||
mysys_err.h | ||
pack.h | ||
password.h | ||
probes_mysql.d.base | ||
probes_mysql.h | ||
probes_mysql_nodtrace.h.in | ||
queues.h | ||
rijndael.h | ||
service_versions.h | ||
sql_common.h | ||
ssl_compat.h | ||
sslopt-case.h | ||
sslopt-longopts.h | ||
sslopt-vars.h | ||
t_ctype.h | ||
thr_alarm.h | ||
thr_lock.h | ||
thr_timer.h | ||
thread_pool_priv.h | ||
typelib.h | ||
violite.h | ||
waiting_threads.h | ||
welcome_copyright_notice.h | ||
wqueue.h | ||
wsrep.h |