Looking through the source a bit I see sqlite3_busy_timeout is a no-fail 
operation (aside from misuse) so sqlite3_busy_timeout(0); 
SQLITE_CHECKPOINT_TRUNCATEsqlite3_busy_timeout(n); does what I need. Thanks 

        - Howard

P.S. sqlite3_close intentionally doesn't respect journal_size_limit. From 

        }else if( pWal->mxWalSize>=0 ){
          /* Try to truncate the WAL file to zero bytes if the checkpoint
          ** completed and fsynced (rc==SQLITE_OK) and we are in persistent
          ** WAL mode (bPersist) and if the PRAGMA journal_size_limit is a
          ** non-negative value (pWal->mxWalSize>=0).  Note that we truncate
          ** to zero bytes as truncating to the journal_size_limit might
          ** leave a corrupt WAL file on disk. */
          walLimitSize(pWal, 0);

That last comment "Note that we truncate..." is interesting. When would this 
corrupt WAL rear its head?
sqlite-users mailing list

Reply via email to