mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
a43c4b0265
auto_increment breaks binlog": if slave's table had a higher auto_increment counter than master's (even though all rows of the two tables were identical), then in some cases, REPLACE and INSERT ON DUPLICATE KEY UPDATE failed to replicate statement-based (it inserted different values on slave from on master). write_record() contained a "thd->next_insert_id=0" to force an adjustment of thd->next_insert_id after the update or replacement. But it is this assigment introduced indeterminism of the statement on the slave, thus the bug. For ON DUPLICATE, we replace that assignment by a call to handler::adjust_next_insert_id_after_explicit_value() which is deterministic (does not depend on slave table's autoinc counter). For REPLACE, this assignment can simply be removed (as REPLACE can't insert a number larger than thd->next_insert_id). We also move a too early restore_auto_increment() down to when we really know that we can restore the value.
11 lines
472 B
Text
11 lines
472 B
Text
#################################
|
|
# Wrapper for rpl_insert_id.test#
|
|
#################################
|
|
########################################################
|
|
# By JBM 2005-02-15 Wrapped to allow reuse of test code#
|
|
# Added to skip if ndb is default #
|
|
########################################################
|
|
-- source include/not_ndb_default.inc
|
|
-- source include/have_innodb.inc
|
|
let $engine_type=innodb;
|
|
-- source extra/rpl_tests/rpl_insert_id.test
|