aboutsummaryrefslogtreecommitdiffhomepage
path: root/sqlite
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite')
-rw-r--r--sqlite/sqlite/sqlite3.c15
1 files 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; */