Fix handling of errors returned by the SQLITE_FCNTL_OMIT_SYNCED file-control.

FossilOrigin-Name: d9a5f44f4a27336d41e60b6c3791bd018fbbff6f
This commit is contained in:
dan 2013-12-10 16:27:59 +00:00
parent 999cd08aae
commit a01abc302d
3 changed files with 11 additions and 12 deletions

View File

@ -1,5 +1,5 @@
C Modify\sthe\sway\ssome\sinternal\sfile-controls\sare\sinvoked.\sIn\sorder\sto\ssupport\smulti-file\stransactions\sin\sthe\szipvfs\sextension.
D 2013-12-09T20:42:03.163
C Fix\shandling\sof\serrors\sreturned\sby\sthe\sSQLITE_FCNTL_OMIT_SYNCED\sfile-control.
D 2013-12-10T16:27:59.750
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in e1a9b4258bbde53f5636f4e238c65b7e11459e2b
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -207,7 +207,7 @@ F src/os.h 4a46270a64e9193af4a0aaa3bc2c66dc07c29b3f
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
F src/os_unix.c 60a7b3b23e6fcf83a50d1e320b280b551724e11f
F src/os_win.c 4323dd0bac4f7a7037fc4cf87fb4692d17f0b108
F src/pager.c b28711af0f595414a7017f6993d4e6f90a3d2114
F src/pager.c 994fc67f465f4e9159263aa1489cbe608e17d236
F src/pager.h 6a790b64a9ea79bc2c849bdefdd39e2344bca94a
F src/parse.y acee1a9958539e21263362b194594c5255ad2fca
F src/pcache.c f8043b433a57aba85384a531e3937a804432a346
@ -1146,10 +1146,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
P fbfc075a5a3c9c5c98353f396f9da7f7ec7c1c04
R e8a2a861e9953d868791659025627e6a
T *branch * zipvfs-multifile-commit
T *sym-zipvfs-multifile-commit *
T -sym-trunk *
P 32fb1784af4594161d954343e3787db702000a4d
R 821341bcc4c1c23a6ba2875fa8192ed8
U dan
Z 19770b8e4b3ab930c64ec8e320e02ae3
Z 4f103f173d76892892a97e68b335b863

View File

@ -1 +1 @@
32fb1784af4594161d954343e3787db702000a4d
d9a5f44f4a27336d41e60b6c3791bd018fbbff6f

View File

@ -6020,7 +6020,7 @@ int sqlite3PagerSync(Pager *pPager, const char *zMaster){
rc = sqlite3OsFileControl(pPager->fd, SQLITE_FCNTL_SYNC_OMITTED, pArg);
if( rc==SQLITE_NOTFOUND ) rc = SQLITE_OK;
}
if( !pPager->noSync ){
if( rc==SQLITE_OK && !pPager->noSync ){
assert( !MEMDB );
rc = sqlite3OsSync(pPager->fd, pPager->syncFlags);
}
@ -6350,7 +6350,9 @@ int sqlite3PagerRollback(Pager *pPager){
assert( pPager->eState==PAGER_READER || rc!=SQLITE_OK );
assert( rc==SQLITE_OK || rc==SQLITE_FULL || rc==SQLITE_CORRUPT
|| rc==SQLITE_NOMEM || (rc&0xFF)==SQLITE_IOERR );
|| rc==SQLITE_NOMEM || (rc&0xFF)==SQLITE_IOERR
|| rc==SQLITE_CANTOPEN
);
/* If an error occurs during a ROLLBACK, we can no longer trust the pager
** cache. So call pager_error() on the way out to make any error persistent.