1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Ensure that we reset auto-increment cache if we have to do an UPDATE becasue of REPLACE

This fixes bug #11080: Multi-row REPLACE fails on a duplicate key error


mysql-test/r/auto_increment.result:
  New tests for auto-increment and replace
mysql-test/r/innodb.result:
  New tests for auto-increment and replace
mysql-test/t/auto_increment.test:
  New tests for auto-increment and replace
mysql-test/t/innodb.test:
  New tests for auto-increment and replace
mysys/my_alloc.c:
  More comments
This commit is contained in:
unknown
2005-06-06 20:41:52 +03:00
parent a0682cac47
commit 9595c788f9
6 changed files with 172 additions and 0 deletions

View File

@@ -916,6 +916,12 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
if (res == VIEW_CHECK_ERROR)
goto before_trg_err;
if (thd->clear_next_insert_id)
{
/* Reset auto-increment cacheing if we do an update */
thd->clear_next_insert_id= 0;
thd->next_insert_id= 0;
}
if ((error=table->file->update_row(table->record[1],table->record[0])))
{
if ((error == HA_ERR_FOUND_DUPP_KEY) && info->ignore)
@@ -949,6 +955,12 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
TRG_ACTION_BEFORE, TRUE))
goto before_trg_err;
if (thd->clear_next_insert_id)
{
/* Reset auto-increment cacheing if we do an update */
thd->clear_next_insert_id= 0;
thd->next_insert_id= 0;
}
if ((error=table->file->update_row(table->record[1],
table->record[0])))
goto err;