mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Keep batch-atomic-writes turned on for journal_mode=MEMORY, but turn them
off for synchronous=OFF. Refuse to compile with both SQLITE_MMAP_READWRITE and SQLITE_ENABLE_BATCH_ATOMIC_WRITE. Fix up some comments in the commit logic. FossilOrigin-Name: 2e80e19e4faac30947ed56aa3601c45c758cafb27f84780df255fdbcdc9a6999
This commit is contained in:
26
src/pager.c
26
src/pager.c
@@ -6369,6 +6369,21 @@ int sqlite3PagerCommitPhaseOne(
|
||||
sqlite3PcacheCleanAll(pPager->pPCache);
|
||||
}
|
||||
}else{
|
||||
/* The bBatch boolean is true if the batch-atomic-write commit method
|
||||
** should be used. No rollback journal is created if batch-atomic-write
|
||||
** is enabled.
|
||||
*/
|
||||
sqlite3_file *fd = pPager->fd;
|
||||
#ifdef SQLITE_ENABLE_BATCH_ATOMIC_WRITE
|
||||
const int bBatch = zMaster==0 /* An SQLITE_IOCAP_BATCH_ATOMIC commit */
|
||||
&& (sqlite3OsDeviceCharacteristics(fd) & SQLITE_IOCAP_BATCH_ATOMIC)
|
||||
&& !pPager->noSync
|
||||
&& sqlite3JournalIsInMemory(pPager->jfd);
|
||||
#else
|
||||
# define bBatch 0
|
||||
#endif
|
||||
|
||||
#ifdef SQLITE_ENABLE_ATOMIC_WRITE
|
||||
/* The following block updates the change-counter. Exactly how it
|
||||
** does this depends on whether or not the atomic-update optimization
|
||||
** was enabled at compile time, and if this transaction meets the
|
||||
@@ -6392,17 +6407,6 @@ int sqlite3PagerCommitPhaseOne(
|
||||
** in 'direct' mode. In this case the journal file will never be
|
||||
** created for this transaction.
|
||||
*/
|
||||
sqlite3_file *fd = pPager->fd;
|
||||
#ifdef SQLITE_ENABLE_BATCH_ATOMIC_WRITE
|
||||
const int bBatch = zMaster==0 /* An SQLITE_IOCAP_BATCH_ATOMIC commit */
|
||||
&& (sqlite3OsDeviceCharacteristics(fd) & SQLITE_IOCAP_BATCH_ATOMIC)
|
||||
&& pPager->journalMode!=PAGER_JOURNALMODE_MEMORY
|
||||
&& sqlite3JournalIsInMemory(pPager->jfd);
|
||||
#else
|
||||
# define bBatch 0
|
||||
#endif
|
||||
|
||||
#ifdef SQLITE_ENABLE_ATOMIC_WRITE
|
||||
if( bBatch==0 ){
|
||||
PgHdr *pPg;
|
||||
assert( isOpen(pPager->jfd)
|
||||
|
Reference in New Issue
Block a user