1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-20441 ER_CRASHED_ON_USAGE upon update on versioned Aria table

Turn read cache off for update and multi-update for versioned
table. no_cache is reinited on each TABLE open because it is
applicable for specific algorithms.

As a side fix vers_insert_history_row() honors vers_write setting.

Aria with row_format=fixed uses IO_CACHE of type READ_CACHE for
sequential read in update loop. When history row is inserted inside
this loop the cache misses it and fails with error.

TODO:

Currently maria_extra() does not support SEQ_READ_APPEND. Probably it
might be possible to use this type of cache.
This commit is contained in:
Aleksey Midenkov
2019-12-02 11:48:37 +03:00
parent 57cab7cd51
commit 498a96a478
7 changed files with 43 additions and 9 deletions

View File

@ -1646,6 +1646,8 @@ static int last_uniq_key(TABLE *table,uint keynr)
int vers_insert_history_row(TABLE *table)
{
DBUG_ASSERT(table->versioned(VERS_TIMESTAMP));
if (!table->vers_write)
return 0;
restore_record(table,record[1]);
// Set Sys_end to now()