diff options
-rw-r--r-- | storage/maria/ma_loghandler.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 6551e8ee21f..0a88392a12e 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -277,8 +277,7 @@ static LOG_DESC INIT_LOGREC_REDO_PURGE_ROW_TAIL= /* QQQ: TODO: variable and fixed size??? */ static LOG_DESC INIT_LOGREC_REDO_PURGE_BLOCKS= {LOGRECTYPE_VARIABLE_LENGTH, - FILEID_STORE_SIZE + PAGERANGE_STORE_SIZE + PAGE_STORE_SIZE + - PAGERANGE_STORE_SIZE, + 0, FILEID_STORE_SIZE + PAGERANGE_STORE_SIZE + PAGE_STORE_SIZE + PAGERANGE_STORE_SIZE, NULL, write_hook_for_redo, NULL, 0}; @@ -1428,6 +1427,7 @@ static uint16 translog_get_total_chunk_length(byte *page, uint16 offset) static my_bool translog_buffer_flush(struct st_translog_buffer *buffer) { uint32 i; + PAGECACHE_FILE file; DBUG_ENTER("translog_buffer_flush"); DBUG_PRINT("enter", ("Buffer: #%u 0x%lx: " @@ -1451,11 +1451,11 @@ static my_bool translog_buffer_flush(struct st_translog_buffer *buffer) translog_buffer_lock(buffer); } + file.file= buffer->file; for (i= 0; i < buffer->size; i+= TRANSLOG_PAGE_SIZE) { - PAGECACHE_FILE file; - file.file= buffer->file; DBUG_ASSERT(log_descriptor.pagecache->block_size == TRANSLOG_PAGE_SIZE); + DBUG_ASSERT(i + TRANSLOG_PAGE_SIZE <= buffer->size); if (pagecache_write(log_descriptor.pagecache, &file, (LSN_OFFSET(buffer->offset) + i) / TRANSLOG_PAGE_SIZE, |