diff --git a/dict/dict0dict.c b/dict/dict0dict.c index 595dfb06ee5..368ff3c2bc2 100644 --- a/dict/dict0dict.c +++ b/dict/dict0dict.c @@ -441,6 +441,8 @@ dict_table_autoinc_initialize( dict_table_t* table, /* in: table */ ib_longlong value) /* in: next value to assign to a row */ { + ut_ad(mutex_own(&table->autoinc_mutex)); + table->autoinc_inited = TRUE; table->autoinc = value; } @@ -457,6 +459,8 @@ dict_table_autoinc_read( { ib_longlong value; + ut_ad(mutex_own(&table->autoinc_mutex)); + if (!table->autoinc_inited) { value = 0; diff --git a/row/row0mysql.c b/row/row0mysql.c index 4ba4a3dd9b7..b3cf20b78b8 100644 --- a/row/row0mysql.c +++ b/row/row0mysql.c @@ -2895,7 +2895,9 @@ next_rec: /* MySQL calls ha_innobase::reset_auto_increment() which does the same thing. */ + dict_table_autoinc_lock(table); dict_table_autoinc_initialize(table, 0); + dict_table_autoinc_unlock(table); dict_update_statistics(table); trx_commit_for_mysql(trx);