Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | If an error (OOM or SQLITE_FULL error) occurs while executing an SQL statement and a statement-transaction is automatically rolled back as a result, if a second error occurs during the statement rollback do a full transaction rollback instead. Otherwise the client can be left with an inconsistent cache. This can affect both WAL and rollback modes. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
eb80ddc665132c607c258b59131025a2 |
User & Date: | dan 2010-06-03 09:17:38.000 |
Original Comment: | If an error (OOM or SQLITE_FULL error) occurs while executing an SQL statement and a statement-transaction is automatically rolled back as a result, if a second error occurs during the statement rollback do a full transaction rollback instead. Otherwise the client can be left with an inconsistent cache. |
Context
2010-06-03
| ||
09:25 | Enhancements to test_vfs.c and walfault.test. (check-in: ac0de2f39e user: dan tags: trunk) | |
09:17 | If an error (OOM or SQLITE_FULL error) occurs while executing an SQL statement and a statement-transaction is automatically rolled back as a result, if a second error occurs during the statement rollback do a full transaction rollback instead. Otherwise the client can be left with an inconsistent cache. This can affect both WAL and rollback modes. (check-in: eb80ddc665 user: dan tags: trunk) | |
09:01 | If a malloc fails while allocating a savepoint object at the pager level, do not try to roll that savepoint back later on. (check-in: 91cb08ffb6 user: dan tags: trunk) | |
Changes
Changes to src/vdbeaux.c.
︙ | ︙ | |||
2139 2140 2141 2142 2143 2144 2145 | ** Note that sqlite3VdbeCloseStatement() can only fail if eStatementOp ** is SAVEPOINT_ROLLBACK. But if p->rc==SQLITE_OK then eStatementOp ** must be SAVEPOINT_RELEASE. Hence the NEVER(p->rc==SQLITE_OK) in ** the following code. */ if( eStatementOp ){ rc = sqlite3VdbeCloseStatement(p, eStatementOp); | > > | | | | > > > > > | 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 | ** Note that sqlite3VdbeCloseStatement() can only fail if eStatementOp ** is SAVEPOINT_ROLLBACK. But if p->rc==SQLITE_OK then eStatementOp ** must be SAVEPOINT_RELEASE. Hence the NEVER(p->rc==SQLITE_OK) in ** the following code. */ if( eStatementOp ){ rc = sqlite3VdbeCloseStatement(p, eStatementOp); if( rc ){ assert( eStatementOp==SAVEPOINT_ROLLBACK ); if( NEVER(p->rc==SQLITE_OK) || p->rc==SQLITE_CONSTRAINT ){ p->rc = rc; sqlite3DbFree(db, p->zErrMsg); p->zErrMsg = 0; } invalidateCursorsOnModifiedBtrees(db); sqlite3RollbackAll(db); sqlite3CloseSavepoints(db); db->autoCommit = 1; } } /* If this was an INSERT, UPDATE or DELETE and no statement transaction ** has been rolled back, update the database connection change-counter. */ if( p->changeCntOn ){ |
︙ | ︙ |