-C Handle\sthe\scase\swhere\sxShmMap\sreturns\sSQLITE_BUSY.
-D 2010-07-15T17:54:15
+C Changes\sto\swal.c\sso\sthat\sSQLite\scan\sread\seven\sif\sthe\sWAL\sfile\sis\sopened\sread-only,\sprovided\sthe\swal-index\s(shm\sfile)\sis\sopened\sread/write.
+D 2010-07-15T18:20:54
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in ec08dc838fd8110fe24c92e5130bcd91cbb1ff2e
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/vdbemem.c 5e579abf6532001dfbee0e640dc34eae897a9807
F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
-F src/wal.c 66e9034aa9076ce2dbf9ac1ba9fbb9d52ef77c52
+F src/wal.c 0925601f3299c2941a67c9cfff41ee710f70ca82
F src/wal.h 906c85760598b18584921fe08008435aa4eeeeb2
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
F src/where.c 903a7828a0a7de03b5d0f1b5eff222d8d5b138f1
F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
F test/vtab_shared.test 0eff9ce4f19facbe0a3e693f6c14b80711a4222d
F test/wal.test 1891e6f72dd437a1c2a48091aa9182ba17a8f780
-F test/wal2.test 7c50a38aa9f0b7c7144d5556d7f30b61febfc929
+F test/wal2.test fa6dc4457b46988f46cf6c68ea51ebe341765f4a
F test/wal3.test d2ae7e66f973bd6b58ce49e546b2c00f44fe0485
F test/wal4.test 640be93f5422df37203aa5e7c06b24fb5e4a2439
F test/wal_common.tcl 895d76138043b86bdccf36494054bdabcf65837b
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P a121cd80c5ac94e5977bc3164d2500e0ea132fed
-R b291f8d91c6eb25a36e00bd7f65fa871
+P 75f5354876c4300a8e53fe551dc837dd383d1e38
+R 5fdef461b56aef5e86f35d4620ab20d6
U dan
-Z 6941f09d52700154471a2c362441f818
+Z 679f6331e7be3f40e18fcb4456a4e594
u8 exclusiveMode; /* Non-zero if connection is in exclusive mode */
u8 writeLock; /* True if in a write transaction */
u8 ckptLock; /* True if holding a checkpoint lock */
+ u8 readOnly; /* True if the WAL file is open read-only */
WalIndexHdr hdr; /* Wal-index header for current transaction */
const char *zWalName; /* Name of WAL file */
u32 nCkpt; /* Checkpoint sequence counter in the wal-header */
flags = (SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_WAL);
rc = sqlite3OsOpen(pVfs, zWalName, pRet->pWalFd, flags, &flags);
if( rc==SQLITE_OK && flags&SQLITE_OPEN_READONLY ){
- rc = SQLITE_CANTOPEN;
+ pRet->readOnly = 1;
}
if( rc!=SQLITE_OK ){
** transaction. */
assert( pWal->readLock>=0 );
+ if( pWal->readOnly ){
+ return SQLITE_READONLY;
+ }
+
/* Only one writer allowed at a time. Get the write lock. Return
** SQLITE_BUSY if unable.
*/
foreach {tn db_perm wal_perm shm_perm can_open can_read can_write} {
2 00644 00644 00644 1 1 1
- 3 00644 00400 00644 1 0 0
+ 3 00644 00400 00644 1 1 0
4 00644 00644 00400 1 0 0
5 00400 00644 00644 1 1 0