Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Avoid truncating non-in-memory sub-journals when releasing a savepoint for a small performance improvement. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
27dc5b1c52eaa5f99cf44ee31204f625 |
User & Date: | shaneh 2010-02-05 16:28:00.000 |
References
2010-02-25
| ||
01:47 | Start a new branch for release 3.6.22 plus limited enhancements and fixes. This first check-in includes the performance enhancements of check-ins [26cb1df735], [61a2c8d4d6], and [27dc5b1c52] (check-in: 9588259882 user: drh tags: branch-3.6.22) | |
Context
2010-02-12
| ||
22:43 | Added experimental mutex implementation using interlocked ops and spin locks. (Closed-Leaf check-in: f3676b243d user: shaneh tags: experimental) | |
2010-02-05
| ||
18:00 | Make sure file descriptors are closed before unlinking in VxWorks. (check-in: f64b81f13d user: drh tags: trunk) | |
16:28 | Avoid truncating non-in-memory sub-journals when releasing a savepoint for a small performance improvement. (check-in: 27dc5b1c52 user: shaneh tags: trunk) | |
14:12 | Remove the use of 64-bit math in the offset computations of the OP_Column opcode for a small performance improvement. (check-in: 61a2c8d4d6 user: drh tags: trunk) | |
Changes
Changes to src/pager.c.
︙ | ︙ | |||
4977 4978 4979 4980 4981 4982 4983 | int ii; /* Iterator variable */ int nNew; /* Number of remaining savepoints after this op. */ /* Figure out how many savepoints will still be active after this ** operation. Store this value in nNew. Then free resources associated ** with any savepoints that are destroyed by this operation. */ | | > > > > > > > > > > > | | < < < < < < < | 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 | int ii; /* Iterator variable */ int nNew; /* Number of remaining savepoints after this op. */ /* Figure out how many savepoints will still be active after this ** operation. Store this value in nNew. Then free resources associated ** with any savepoints that are destroyed by this operation. */ nNew = iSavepoint + (( op==SAVEPOINT_RELEASE ) ? 0 : 1); for(ii=nNew; ii<pPager->nSavepoint; ii++){ sqlite3BitvecDestroy(pPager->aSavepoint[ii].pInSavepoint); } pPager->nSavepoint = nNew; /* If this is a release of the outermost savepoint, truncate ** the sub-journal to zero bytes in size. */ if( op==SAVEPOINT_RELEASE ){ if( nNew==0 && isOpen(pPager->sjfd) ){ /* Only truncate if it is an in-memory sub-journal. */ if( sqlite3IsMemJournal(pPager->sjfd) ){ rc = sqlite3OsTruncate(pPager->sjfd, 0); } pPager->nSubRec = 0; } } /* Else this is a rollback operation, playback the specified savepoint. ** If this is a temp-file, it is possible that the journal file has ** not yet been opened. In this case there have been no changes to ** the database file, so the playback operation can be skipped. */ else if( isOpen(pPager->jfd) ){ PagerSavepoint *pSavepoint = (nNew==0)?0:&pPager->aSavepoint[nNew-1]; rc = pagerPlaybackSavepoint(pPager, pSavepoint); assert(rc!=SQLITE_DONE); } } return rc; } /* ** Return the full pathname of the database file. */ |
︙ | ︙ |