1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

MDEV-15380 Index for versioned table gets corrupt after partitioning and DELETE

In a test case Update occurs between Search and Delete/Update. This corrupts rowid
which Search saves for Delete/Update. Patch prevents this by using of
HA_EXTRA_REMEMBER_POS and HA_EXTRA_RESTORE_POS in a partition code.

This situation possibly occurs only with system versioning table and partition.
MyISAM and Aria engines are affected.

fix by midenok
Closes #705
This commit is contained in:
Eugene Kosov
2018-05-17 09:33:04 +03:00
committed by Sergei Golubchik
parent 4ec8598c1d
commit aa5683d12e
4 changed files with 55 additions and 3 deletions

View File

@ -254,7 +254,12 @@ int TABLE::delete_row()
store_record(this, record[1]);
vers_update_end();
return file->ha_update_row(record[1], record[0]);
int res;
if ((res= file->extra(HA_EXTRA_REMEMBER_POS)))
return res;
if ((res= file->ha_update_row(record[1], record[0])))
return res;
return file->extra(HA_EXTRA_RESTORE_POS);
}