Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: third_party/sqlite/src/test/jrnlmode2.test

Issue 6990047: Import SQLite 3.7.6.3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/src/test/jrnlmode.test ('k') | third_party/sqlite/src/test/jrnlmode3.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # 2009 March 24 1 # 2009 March 24
2 # 2 #
3 # The author disclaims copyright to this source code. In place of 3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing: 4 # a legal notice, here is a blessing:
5 # 5 #
6 # May you do good and not evil. 6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others. 7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give. 8 # May you share freely, never taking more than you give.
9 # 9 #
10 #*********************************************************************** 10 #***********************************************************************
11 # 11 #
12 # $Id: jrnlmode2.test,v 1.6 2009/06/05 17:09:12 drh Exp $
13 12
14 set testdir [file dirname $argv0] 13 set testdir [file dirname $argv0]
15 source $testdir/tester.tcl 14 source $testdir/tester.tcl
16 15
17 ifcapable {!pager_pragmas} { 16 ifcapable {!pager_pragmas} {
18 finish_test 17 finish_test
19 return 18 return
20 } 19 }
21 20
22 #------------------------------------------------------------------------- 21 #-------------------------------------------------------------------------
23 # Test overview: 22 # The tests in this file check that the following two bugs (both now fixed)
23 # do not reappear.
24 # 24 #
25 # jrnlmode2-1.*: Demonstrate bug #3745 25 # jrnlmode2-1.*: Demonstrate bug #3745:
26 # jrnlmode2-2.*: Demonstrate bug #3751 26 #
27 # In persistent journal mode, if:
28 #
29 # * There is a persistent journal in the file-system, AND
30 # * there exists a connection with a shared lock on the db file,
31 #
32 # then a second connection cannot open a read-transaction on the database.
33 # The reason is because while determining that the persistent-journal is
34 # not a hot-journal, SQLite currently grabs an exclusive lock on the
35 # database file. If this fails because another connection has a shared
36 # lock, then SQLITE_BUSY is returned to the user.
37 #
38 # jrnlmode2-2.*: Demonstrate bug #3751:
39 #
40 # If a connection is opened in SQLITE_OPEN_READONLY mode, the underlying
41 # unix file descriptor on the database file is opened in O_RDONLY mode.
42 #
43 # When SQLite queries the database file for the schema in order to compile
44 # the SELECT statement, it sees the empty journal in the file system, it
45 # attempts to obtain an exclusive lock on the database file (this is a
46 # bug). The attempt to obtain an exclusive (write) lock on a read-only file
47 # fails at the OS level. Under unix, fcntl() reports an EBADF - "Bad file
48 # descriptor" - error.
27 # 49 #
28 50
29 do_test jrnlmode2-1.1 { 51 do_test jrnlmode2-1.1 {
30 execsql { 52 execsql {
31 PRAGMA journal_mode = persist; 53 PRAGMA journal_mode = persist;
32 CREATE TABLE t1(a, b); 54 CREATE TABLE t1(a, b);
33 INSERT INTO t1 VALUES(1, 2); 55 INSERT INTO t1 VALUES(1, 2);
34 } 56 }
35 } {persist} 57 } {persist}
36 58
37 do_test jrnlmode2-1.2 { 59 do_test jrnlmode2-1.2 {
38 file exists test.db-journal 60 file exists test.db-journal
39 } {1} 61 } {1}
40 62
41 do_test jrnlmode2-1.3 { 63 do_test jrnlmode2-1.3 {
42 sqlite3 db2 test.db 64 sqlite3 db2 test.db
43 execsql { SELECT * FROM t1 } db2 65 execsql { SELECT * FROM t1 } db2
44 } {1 2} 66 } {1 2}
45 67
46 do_test jrnlmode2-1.4 { 68 do_test jrnlmode2-1.4 {
47 execsql { 69 execsql {
48 INSERT INTO t1 VALUES(3, 4); 70 INSERT INTO t1 VALUES(3, 4);
71 }
72 execsql {
49 BEGIN; 73 BEGIN;
50 SELECT * FROM t1; 74 SELECT * FROM t1;
51 } 75 }
52 execsql { PRAGMA lock_status } 76 execsql { PRAGMA lock_status }
53 } {main shared temp closed} 77 } {main shared temp closed}
54 78
55 do_test jrnlmode2-1.5 { 79 do_test jrnlmode2-1.5 {
56 file exists test.db-journal 80 file exists test.db-journal
57 } {1} 81 } {1}
58 82
(...skipping 21 matching lines...) Expand all
80 do_test jrnlmode2-2.3 { 104 do_test jrnlmode2-2.3 {
81 file size test.db-journal 105 file size test.db-journal
82 } {0} 106 } {0}
83 107
84 do_test jrnlmode2-2.4 { 108 do_test jrnlmode2-2.4 {
85 sqlite3 db2 test.db -readonly 1 109 sqlite3 db2 test.db -readonly 1
86 catchsql { SELECT * FROM t1 } db2 110 catchsql { SELECT * FROM t1 } db2
87 } {0 {1 2 3 4 5 6}} 111 } {0 {1 2 3 4 5 6}}
88 112
89 do_test jrnlmode2-2.5 { 113 do_test jrnlmode2-2.5 {
114 db close
90 file delete test.db-journal 115 file delete test.db-journal
91 } {} 116 } {}
92
93 do_test jrnlmode2-2.6 { 117 do_test jrnlmode2-2.6 {
94 sqlite3 db2 test.db -readonly 1 118 sqlite3 db2 test.db -readonly 1
95 catchsql { SELECT * FROM t1 } db2 119 catchsql { SELECT * FROM t1 } db2
96 } {0 {1 2 3 4 5 6}} 120 } {0 {1 2 3 4 5 6}}
97 121
98 catch { db2 close } 122 catch { db2 close }
99 finish_test 123 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/jrnlmode.test ('k') | third_party/sqlite/src/test/jrnlmode3.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698