1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Fix an assert() failure caused by setting "PRAGMA journal_mode=off" on an database in exclusive-mode that has already opened the journal file.

FossilOrigin-Name: 40db3e40126db1035fcc12989026915744dc5651
This commit is contained in:
dan
2015-05-01 16:57:24 +00:00
parent 5789d1a46f
commit 929b923388
4 changed files with 26 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
C Remove\sobselete\scomment\stext\sfrom\sthe\sdescription\sof\sthe\sTable\sobject.\nNo\schanges\sto\scode.
D 2015-05-01T15:25:51.767
C Fix\san\sassert()\sfailure\scaused\sby\ssetting\s"PRAGMA\sjournal_mode=off"\son\san\sdatabase\sin\sexclusive-mode\sthat\shas\salready\sopened\sthe\sjournal\sfile.
D 2015-05-01T16:57:24.266
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in e3268d234210842b4be0a6e2e1c5990999f1d9f4
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -217,7 +217,7 @@ F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
F src/os_unix.c 23eb5f56fac54d8fe0cb204291f3b3b2d94f23fc
F src/os_win.c 2da99cf07da7db6bcb1974013abfd89ec74749b3
F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
F src/pager.c 5283581c8ce8950ff483a0b3a3cab9cb4d25a21e
F src/pager.c 97110085b1321298412f1e5c37bddb95b36d9208
F src/pager.h c3476e7c89cdf1c6914e50a11f3714e30b4e0a77
F src/parse.y c4e0387bc88c8e21e5ba653e2578959a1f3cdbc7
F src/pcache.c 10539fb959849ad6efff80050541cab3d25089d4
@@ -690,7 +690,7 @@ F test/join6.test cfe6503791ceb0cbb509966740286ec423cbf10b
F test/journal1.test 69abc726c51b4a0409189f9a85191205297c0577
F test/journal2.test ae06f566c28552c313ded3fee79a6c69e6d049b1
F test/journal3.test ff8af941f9e06161d3db1b46bb9f965ff0e7f307
F test/jrnlmode.test 9ee3a78f53d52cca737db69293d15dc41c0cbd36
F test/jrnlmode.test 6014ba5c11d66ff8bc7d87a7a2abc5c54be73b2e
F test/jrnlmode2.test 81610545a4e6ed239ea8fa661891893385e23a1d
F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa
F test/keyword1.test 37ef6bba5d2ed5b07ecdd6810571de2956599dff
@@ -1255,7 +1255,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 605347e087ec5eb817f3c94f4616abe26c7ab66b
R 49af71398b314fdf0cd1517eca78da9a
U drh
Z cb062f9c66d14cbf9dc87b64ba4f37f6
P 6566b72a9c68b347d126189b376f52ffd56edfba
R f6676a27ea8fd7f080695c7806564a78
U dan
Z fe516a6f38b171b235c89343c757478c

View File

@@ -1 +1 @@
6566b72a9c68b347d126189b376f52ffd56edfba
40db3e40126db1035fcc12989026915744dc5651

View File

@@ -7010,6 +7010,8 @@ int sqlite3PagerSetJournalMode(Pager *pPager, int eMode){
}
assert( state==pPager->eState );
}
}else if( eMode==PAGER_JOURNALMODE_OFF ){
sqlite3OsClose(pPager->jfd);
}
}

View File

@@ -555,4 +555,19 @@ do_execsql_test jrnlmode-8.28 { PRAGMA journal_mode=DELETE } {delete}
do_execsql_test jrnlmode-8.29 { COMMIT } {}
do_execsql_test jrnlmode-8.30 { PRAGMA journal_mode=DELETE } {delete}
# Assertion fault on 2015-05-01
do_test jrnlmode-9.1 {
forcedelete test2.db
sqlite3 db2 test2.db
breakpoint
db2 eval {CREATE TEMP TABLE t(l); PRAGMA journal_mode=off;}
db2 close
} {}
do_execsql_test jrnlmode-9.2 {
PRAGMA locking_mode = exclusive;
CREATE TABLE tx(a);
PRAGMA journal_mode = off;
} {exclusive off}
finish_test