summaryrefslogtreecommitdiff
path: root/sql/log_event.cc
diff options
context:
space:
mode:
authorHe Zhenxing <zhenxing.he@sun.com>2009-01-14 16:27:32 +0800
committerHe Zhenxing <zhenxing.he@sun.com>2009-01-14 16:27:32 +0800
commitf2c122bf9080d9f0e2e61890edea697e76be5bf6 (patch)
tree4a695b547a5033b6c5fe7913b8905ddfd8099fc8 /sql/log_event.cc
parenta58bc1bef3c76ebe716f652759771d9ddce2d484 (diff)
downloadmariadb-git-f2c122bf9080d9f0e2e61890edea697e76be5bf6.tar.gz
BUG#41986 Replication slave does not pick up proper AUTO_INCREMENT value for Innodb tables
The next number (AUTO_INCREMENT) field of the table for write rows events are not initialized, and cause some engines (innodb) not correctly update the tables's auto_increment value. This patch fixed this problem by honor next number fields if present. mysql-test/extra/rpl_tests/rpl_auto_increment.test: Add test code for BUG#41986 mysql-test/suite/rpl/r/rpl_auto_increment.result: update test result file for BUG#41986 sql/log_event.cc: set next_number_field before writing rows, and reset next_number_field after finished writing rows
Diffstat (limited to 'sql/log_event.cc')
-rw-r--r--sql/log_event.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc
index dfaf8e3c931..cf338d8fd80 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -8091,6 +8091,9 @@ Write_rows_log_event::do_before_row_operations(const Slave_reporting_capability
analyze if explicit data is provided for slave's TIMESTAMP columns).
*/
m_table->timestamp_field_type= TIMESTAMP_NO_AUTO_SET;
+
+ /* Honor next number column if present */
+ m_table->next_number_field= m_table->found_next_number_field;
return error;
}
@@ -8099,6 +8102,7 @@ Write_rows_log_event::do_after_row_operations(const Slave_reporting_capability *
int error)
{
int local_error= 0;
+ m_table->next_number_field=0;
if (bit_is_set(slave_exec_mode, SLAVE_EXEC_MODE_IDEMPOTENT) == 1 ||
m_table->s->db_type()->db_type == DB_TYPE_NDBCLUSTER)
{