diff options
author | drh <drh@noemail.net> | 2012-10-09 14:58:15 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2012-10-09 14:58:15 +0000 |
commit | d1102b1ec7d50045cbbcf2575eacb2d423361fc7 (patch) | |
tree | a586e444e7362a6cf02fa05c85311851e36abb97 /src/backup.c | |
parent | c4645dacfb435002911b187b474fa0788db9cde0 (diff) | |
parent | 5a55826bcda624f8fa4a3b7cc0c8845a689d8957 (diff) | |
download | sqlite-d1102b1ec7d50045cbbcf2575eacb2d423361fc7.tar.gz sqlite-d1102b1ec7d50045cbbcf2575eacb2d423361fc7.zip |
Merge the latest trunk changes, especially the ORDER BY optimizer enhancements
but also other fixes, onto the sessions branch.
FossilOrigin-Name: f1fbb8c5bfa84e84e0b8e2872d83b06a0c0d5acc
Diffstat (limited to 'src/backup.c')
-rw-r--r-- | src/backup.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backup.c b/src/backup.c index 4881215e9..6abc11c20 100644 --- a/src/backup.c +++ b/src/backup.c @@ -219,13 +219,16 @@ static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){ const int nCopy = MIN(nSrcPgsz, nDestPgsz); const i64 iEnd = (i64)iSrcPg*(i64)nSrcPgsz; #ifdef SQLITE_HAS_CODEC - int nSrcReserve = sqlite3BtreeGetReserve(p->pSrc); + /* Use BtreeGetReserveNoMutex() for the source b-tree, as although it is + ** guaranteed that the shared-mutex is held by this thread, handle + ** p->pSrc may not actually be the owner. */ + int nSrcReserve = sqlite3BtreeGetReserveNoMutex(p->pSrc); int nDestReserve = sqlite3BtreeGetReserve(p->pDest); #endif - int rc = SQLITE_OK; i64 iOff; + assert( sqlite3BtreeGetReserveNoMutex(p->pSrc)>=0 ); assert( p->bDestLocked ); assert( !isFatalError(p->rc) ); assert( iSrcPg!=PENDING_BYTE_PAGE(p->pSrc->pBt) ); |