diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c index 5f3740f1071..05cb5555cdf 100644 --- a/storage/maria/ma_pagecache.c +++ b/storage/maria/ma_pagecache.c @@ -99,7 +99,7 @@ DBUG_PRINT("info", \ ("block: 0x%lx fd: %lu page: %lu s: %0x hshL: " \ " 0x%lx req: %u/%u wrlocks: %u rdlocks %u " \ - "rdlocks_q: %u pins: %u status: %u", \ + "rdlocks_q: %u pins: %u status: %u type: %s", \ (ulong)(B), \ (ulong)((B)->hash_link ? \ (B)->hash_link->file.file : \ @@ -114,7 +114,8 @@ (B)->hash_link->requests : \ 0), \ block->wlocks, block->rlocks, block->rlocks_queue, \ - (uint)(B)->pins, (uint)(B)->status)) + (uint)(B)->pins, (uint)(B)->status, \ + page_cache_page_type_str[(B)->type])) /* TODO: put it to my_static.c */ my_bool my_disable_flush_pagecache_blocks= 0; diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index fa2691d9e42..f332d465ef1 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -3243,6 +3243,7 @@ void _ma_tmp_disable_logging_for_table(MARIA_HA *info, */ share->state.common= *info->state; info->state= &share->state.common; + info->switched_transactional= TRUE; /* Some code in ma_blockrec.c assumes a trn even if !now_transactional but in @@ -3273,8 +3274,10 @@ my_bool _ma_reenable_logging_for_table(MARIA_HA *info, my_bool flush_pages) MARIA_SHARE *share= info->s; DBUG_ENTER("_ma_reenable_logging_for_table"); - if (share->now_transactional == share->base.born_transactional) + if (share->now_transactional == share->base.born_transactional || + !info->switched_transactional) DBUG_RETURN(0); + info->switched_transactional= FALSE; if ((share->now_transactional= share->base.born_transactional)) { diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h index 3d96aea8694..125cd461570 100644 --- a/storage/maria/maria_def.h +++ b/storage/maria/maria_def.h @@ -548,6 +548,8 @@ struct st_maria_handler /* If info->keyread_buff has to be re-read for rnext */ my_bool keyread_buff_used; my_bool once_flags; /* For MARIA_MRG */ + /* For bulk insert enable/disable transactions control */ + my_bool switched_transactional; #ifdef __WIN__ my_bool owned_by_merge; /* This Maria table is part of a merge union */ #endif