Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Remove a branch made redundant by the earlier exclusive-mode changes. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c501b2ede6aad123bef0aa7ce8b356a1 |
User & Date: | dan 2010-05-12 06:54:32.000 |
Context
2010-05-12
| ||
13:50 | Remove the OP_Variable optimization of check-in [48b77b04935d894] since it can lead to malfunctions as described in ticket [26ff0c82d1e90]. (check-in: 7838163d08 user: drh tags: trunk) | |
06:54 | Remove a branch made redundant by the earlier exclusive-mode changes. (check-in: c501b2ede6 user: dan tags: trunk) | |
2010-05-11
| ||
16:29 | Have os_unix.c use the suffix "-wal-index" for wal-index files instead of "-wal-inde". (check-in: 885e854e7c user: dan tags: trunk) | |
Changes
Changes to src/wal.c.
︙ | ︙ | |||
1212 1213 1214 1215 1216 1217 1218 | ** This function returns SQLITE_OK if the caller may write to the database. ** Otherwise, if the caller is operating on a snapshot that has already ** been overwritten by another writer, SQLITE_BUSY is returned. */ int sqlite3WalWriteLock(Wal *pWal, int op){ int rc = SQLITE_OK; if( op ){ | | | 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 | ** This function returns SQLITE_OK if the caller may write to the database. ** Otherwise, if the caller is operating on a snapshot that has already ** been overwritten by another writer, SQLITE_BUSY is returned. */ int sqlite3WalWriteLock(Wal *pWal, int op){ int rc = SQLITE_OK; if( op ){ assert( pWal->lockState==SQLITE_SHM_READ ); rc = walSetLock(pWal, SQLITE_SHM_WRITE); /* If this connection is not reading the most recent database snapshot, ** it is not possible to write to the database. In this case release ** the write locks and return SQLITE_BUSY. */ if( rc==SQLITE_OK ){ |
︙ | ︙ | |||
1453 1454 1455 1456 1457 1458 1459 | void *pBusyHandlerArg /* Argument to pass to xBusyHandler */ ){ int rc; /* Return code */ int isChanged = 0; /* True if a new wal-index header is loaded */ assert( pWal->pWiData==0 ); | | > > > > > | < > | | | < | 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 | void *pBusyHandlerArg /* Argument to pass to xBusyHandler */ ){ int rc; /* Return code */ int isChanged = 0; /* True if a new wal-index header is loaded */ assert( pWal->pWiData==0 ); /* Get the CHECKPOINT lock. ** ** Normally, the connection will be in UNLOCK state at this point. But ** if the connection is in exclusive-mode it may still be in READ state ** even though the upper layer has no active read-transaction (because ** WalCloseSnapshot() is not called in exclusive mode). The state will ** be set to UNLOCK when this function returns. This is Ok. */ assert( (pWal->lockState==SQLITE_SHM_UNLOCK) || (pWal->exclusiveMode && pWal->lockState==SQLITE_SHM_READ) ); do { rc = walSetLock(pWal, SQLITE_SHM_CHECKPOINT); }while( rc==SQLITE_BUSY && xBusyHandler(pBusyHandlerArg) ); if( rc!=SQLITE_OK ){ walSetLock(pWal, SQLITE_SHM_UNLOCK); return rc; } |
︙ | ︙ |
Changes to test/wal2.test.
︙ | ︙ | |||
571 572 573 574 575 576 577 578 579 580 | } {READ UNLOCK} do_test wal2-6.4.7 { set ::locks [list] execsql { INSERT INTO t1 VALUES('Karl') } set ::locks } {READ WRITE READ UNLOCK} db close finish_test | > > > > > > > > > > > > > > | 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 | } {READ UNLOCK} do_test wal2-6.4.7 { set ::locks [list] execsql { INSERT INTO t1 VALUES('Karl') } set ::locks } {READ WRITE READ UNLOCK} db close tvfs delete do_test wal2-6.5.1 { sqlite3 db test.db execsql { PRAGMA journal_mode = wal; PRAGMA locking_mode = exclusive; CREATE TABLE t2(a, b); PRAGMA wal_checkpoint; INSERT INTO t2 VALUES('I', 'II'); PRAGMA journal_mode; } } {wal exclusive wal} db close finish_test |