mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 20:07:13 +02:00
Added applying of undo for updates
Fixed bug in duplicate key handling for block records during repair All read-row methods now return error number in case of error Don't calculate checksum for null fields Fixed bug when running maria_read_log with -o BUILD/SETUP.sh: Added STACK_DIRECTION BUILD/compile-pentium-debug-max: Moved STACK_DIRECTION to SETUP include/myisam.h: Added extra parameter to write_key storage/maria/ma_blockrec.c: Added applying of undo for updates Fixed indentation Removed some not needed casts Fixed wrong logging of CLR record Split ma_update_block_record to two functions to be able to reuse it from undo-applying Simplify filling of packed fields ma_record_block_record) now returns error number on failure Sligtly changed log record information for undo-update storage/maria/ma_check.c: Fixed bug in duplicate key handling for block records during repair storage/maria/ma_checksum.c: Don't calculate checksum for null fields storage/maria/ma_dynrec.c: _ma_read_dynamic_reocrd() now returns error number on error Rest of the changes are code simplification and indentation fixes storage/maria/ma_locking.c: Added comment storage/maria/ma_loghandler.c: More debugging Removed printing of total_record_length as this was always same as record_length storage/maria/ma_open.c: Allocate bitmap for changed fields storage/maria/ma_packrec.c: read_record now returns error number on error storage/maria/ma_recovery.c: Fixed wrong arguments to undo_row_update storage/maria/ma_statrec.c: read_record now returns error number on error (not 1) Code simplification storage/maria/ma_test1.c: Added exit possibility after update phase (to test undo of updates) storage/maria/maria_def.h: Include bitmap header file storage/maria/maria_read_log.c: Fixed bug when running with -o
This commit is contained in:
parent
58ac5254fa
commit
155193a6e2
16 changed files with 418 additions and 198 deletions
|
|
@ -252,6 +252,9 @@ static int run_test(const char *filename)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
if (maria_commit(file) || maria_begin(file))
|
||||
goto err;
|
||||
|
||||
if (!skip_update)
|
||||
{
|
||||
if (opt_unique)
|
||||
|
|
@ -289,7 +292,7 @@ static int run_test(const char *filename)
|
|||
found=0;
|
||||
while ((error= maria_scan(file,read_record)) == 0)
|
||||
{
|
||||
if (update_count-- == 0) { VOID(maria_close(file)) ; exit(0) ; }
|
||||
if (--update_count == 0) { VOID(maria_close(file)) ; exit(0) ; }
|
||||
memcpy(record,read_record,rec_length);
|
||||
update_record(record);
|
||||
if (maria_update(file,read_record,record))
|
||||
|
|
@ -304,6 +307,18 @@ static int run_test(const char *filename)
|
|||
maria_scan_end(file);
|
||||
}
|
||||
|
||||
if (die_in_middle_of_transaction == 2)
|
||||
{
|
||||
/*
|
||||
Ensure we get changed pages and log to disk
|
||||
As commit record is not done, the undo entries needs to be rolled back.
|
||||
*/
|
||||
_ma_flush_table_files(file, MARIA_FLUSH_DATA, FLUSH_RELEASE,
|
||||
FLUSH_RELEASE);
|
||||
printf("Dying on request after update without maria_close()\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!silent)
|
||||
printf("- Reopening file\n");
|
||||
if (maria_commit(file))
|
||||
|
|
@ -356,7 +371,7 @@ static int run_test(const char *filename)
|
|||
}
|
||||
}
|
||||
|
||||
if (die_in_middle_of_transaction == 2)
|
||||
if (die_in_middle_of_transaction == 3)
|
||||
{
|
||||
/*
|
||||
Ensure we get changed pages and log to disk
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue