-C Add\sa\smissing\swalIndexUnmap()\sto\ssqlite3WalSnapshotOpen().
-D 2010-04-30T09:32:06
+C Fix\sa\scouple\sof\sassert()\sstatements\sin\sos_unix.c\sand\swal.c.\sCombine\ssqlite3WalIsDirty()\swith\ssqlite3WalUndo().
+D 2010-04-30T09:52:18
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in d83a0ffef3dcbfb08b410a6c6dd6c009ec9167fb
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/os.h 534b082c3cb349ad05fa6fa0b06087e022af282c
F src/os_common.h 0d6ee583b6ee3185eb9d951f890c6dd03021a08d
F src/os_os2.c 8ad77a418630d7dee91d1bb04f79c2096301d3a0
-F src/os_unix.c 4237d2a6429307307ebd1e7c1e3ccec875468907
+F src/os_unix.c 685b0347383b5d12dee9961b3cc0337ff075617b
F src/os_win.c a8fc01d8483be472e495793c01064fd87e56a5c1
-F src/pager.c 07c3522319a449db9dc732da828a09c4c55c41a4
+F src/pager.c 434f9751fc2dfc11ade004282deda5f8560bcba2
F src/pager.h 934b598583a9d936bb13c37d62a2fe68ac48781c
F src/parse.y ace5c7a125d9f2a410e431ee3209034105045f7e
F src/pcache.c ace8f6a5ecd4711cc66a1b23053be7109bd437cf
F src/vdbemem.c 2a82f455f6ca6f78b59fb312f96054c04ae0ead1
F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
-F src/wal.c b617892b95ac3f82e657e3c047ad6883111f6b8c
-F src/wal.h d0a7048e68a86d3fe4639858d7f592606545d224
+F src/wal.c 6f0fdfac56f3148b7ff2fcd60f12c2a7bdb5e0de
+F src/wal.h c3f347ba8f1cde46d9bcc6fedaf3ed0aa4b53294
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
F src/where.c faadd9c2bf08868e5135192b44e0d753e363a885
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 265e66e6984c32999bf93981e3b1d19887dfe599
-R 7b9c465ab8c7541a3a7b291b0b84a4e5
+P 72b95fde15dae56390dc8d4168fb2757447e289e
+R 8864259ed44807eea46d7c4986422a72
U dan
-Z 9561c62faf9368c39d4969e72108b9f2
+Z 967d048f88e642230f471eb242428feb
-72b95fde15dae56390dc8d4168fb2757447e289e
\ No newline at end of file
+a8f958be804ee05c4137b3cd110db344713af5f2
\ No newline at end of file
/* Compute locks held by sibling connections */
for(pX=pFile->pFirst; pX; pX=pX->pNext){
if( pX==p ) continue;
- assert( (pX->exclMask & unlockMask)==0 );
+ assert( (pX->exclMask & (p->exclMask|p->sharedMask))==0 );
allMask |= pX->sharedMask;
}
}
}
+ /* Normally, if a transaction is rolled back, any backup processes are
+ ** updated as data is copied out of the rollback journal and into the
+ ** database. This is not generally possible with a WAL database, as
+ ** rollback involves simply truncating the log file. Therefore, if one
+ ** or more frames have already been written to the log (and therefore
+ ** also copied into the backup databases) as part of this transaction,
+ ** the backups must be restarted.
+ */
+ sqlite3BackupRestart(pPager->pBackup);
+
return rc;
}
int rc; /* Return Code */
PgHdr *pList; /* List of dirty pages to revert */
- /* Normally, if a transaction is rolled back, any backup processes are
- ** updated as data is copied out of the rollback journal and into the
- ** database. This is not generally possible with a WAL database, as
- ** rollback involves simply truncating the log file. Therefore, if one
- ** or more frames have already been written to the log (and therefore
- ** also copied into the backup databases) as part of this transaction,
- ** the backups must be restarted.
- */
- if( sqlite3WalDirty(pPager->pWal) ){
- sqlite3BackupRestart(pPager->pBackup);
- }
-
/* For all pages in the cache that are currently dirty or have already
** been written (but not committed) to the log file, do one of the
** following:
static int walIndexReadHdr(Wal *pWal, int *pChanged){
int rc;
- assert( pWal->lockState==SQLITE_SHM_READ );
+ assert( pWal->lockState>=SQLITE_SHM_READ );
walIndexMap(pWal);
/* First try to read the header without a lock. Verify the checksum
return rc;
}
-/*
-** Return true if data has been written but not committed to the log file.
-*/
-int sqlite3WalDirty(Wal *pWal){
- assert( pWal->lockState==SQLITE_SHM_WRITE );
- return( pWal->hdr.iLastPg!=((WalIndexHdr*)pWal->pWiData)->iLastPg );
-}
-
/*
** Write a set of frames to the log. The caller must hold the write-lock
** on the log file (obtained using sqlite3WalWriteLock()).
** response to a ROLLBACK TO command. */
int sqlite3WalSavepointUndo(Wal *pWal, u32 iFrame);
-/* Return true if data has been written but not committed to the log file. */
-int sqlite3WalDirty(Wal *pWal);
-
/* Write a frame or frames to the log. */
int sqlite3WalFrames(Wal *pWal, int, PgHdr *, Pgno, int, int);