From 6176272d600f9873a30482e74efafb9e3a795eeb Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 6 Oct 2022 01:47:45 +0300 Subject: [PATCH] SQLite: fix handling of SQLITE_DEFAULT_SYNCHRONOUS macros. --- sqlite/sqlite/sqlite3.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sqlite/sqlite/sqlite3.c b/sqlite/sqlite/sqlite3.c index 87801250f..4fb5bc5e5 100644 --- a/sqlite/sqlite/sqlite3.c +++ b/sqlite/sqlite/sqlite3.c @@ -60743,17 +60743,24 @@ act_like_temp_file: pPager->memDb = (u8)memDb; pPager->readOnly = (u8)readOnly; assert( useJournal || pPager->tempFile ); - pPager->noSync = pPager->tempFile; + int level = SQLITE_DEFAULT_SYNCHRONOUS + 1; + pPager->noSync = pPager->tempFile || level==PAGER_SYNCHRONOUS_OFF; if( pPager->noSync ){ assert( pPager->fullSync==0 ); assert( pPager->extraSync==0 ); assert( pPager->syncFlags==0 ); assert( pPager->walSyncFlags==0 ); }else{ - pPager->fullSync = 1; - pPager->extraSync = 0; + pPager->fullSync = level>=PAGER_SYNCHRONOUS_FULL ?1:0; + pPager->extraSync = level==PAGER_SYNCHRONOUS_EXTRA ?1:0; pPager->syncFlags = SQLITE_SYNC_NORMAL; - pPager->walSyncFlags = SQLITE_SYNC_NORMAL | (SQLITE_SYNC_NORMAL<<2); + pPager->walSyncFlags = (pPager->syncFlags<<2); + if( pPager->fullSync ){ + pPager->walSyncFlags |= pPager->syncFlags; + } +#if SQLITE_DEFAULT_CKPTFULLFSYNC + pPager->walSyncFlags |= (SQLITE_SYNC_FULL<<2); +#endif } /* pPager->pFirst = 0; */ /* pPager->pFirstSynced = 0; */