SQLite

Check-in [d3d348aa97]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add a busy-handler to a test case in walthread.test to prevent errors.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: d3d348aa975c58c37088eb2830081880896b85e7
User & Date: dan 2010-05-25 15:23:52.000
Context
2010-05-25
15:53
Updated header comments in wal.c. No functional code changes. (check-in: 687632a6b3 user: drh tags: trunk)
15:23
Add a busy-handler to a test case in walthread.test to prevent errors. (check-in: d3d348aa97 user: dan tags: trunk)
13:49
Modify walcrash2.test so that it works with DEFAULT_AUTOVACUUM=1. (check-in: 77438882dd user: dan tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to test/walthread.test.
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
proc do_thread_test2 {args} {
  set name [lindex $args 0]
  if {[lsearch $args -processes]>=0} { error "bad option: -processes"}
  uplevel [lreplace $args 0 0 do_thread_test "$name-threads" -processes 0]
  uplevel [lreplace $args 0 0 do_thread_test "$name-processes" -processes 1]
}


#--------------------------------------------------------------------------
# Start 10 threads. Each thread performs both read and write 
# transactions. Each read transaction consists of:
#
#   1) Reading the md5sum of all but the last table row,
#   2) Running integrity check.
#   3) Reading the value stored in the last table row,







<







216
217
218
219
220
221
222

223
224
225
226
227
228
229
proc do_thread_test2 {args} {
  set name [lindex $args 0]
  if {[lsearch $args -processes]>=0} { error "bad option: -processes"}
  uplevel [lreplace $args 0 0 do_thread_test "$name-threads" -processes 0]
  uplevel [lreplace $args 0 0 do_thread_test "$name-processes" -processes 1]
}


#--------------------------------------------------------------------------
# Start 10 threads. Each thread performs both read and write 
# transactions. Each read transaction consists of:
#
#   1) Reading the md5sum of all but the last table row,
#   2) Running integrity check.
#   3) Reading the value stored in the last table row,
433
434
435
436
437
438
439
440





441


442
443
444
445
446
447
448
  execsql {
    PRAGMA journal_mode = WAL;
    CREATE TABLE t1(a INTEGER PRIMARY KEY, b UNIQUE);
  }
} -thread r 1 {
  # This connection only ever reads the database. Therefore the 
  # busy-handler is not required. Disable it to check that this is true.
  db busy {}





  while {[tt_continue]} integrity_check


  set {} ok
} -thread w 1 {

  proc wal_hook {zDb nEntry} {
    if {$nEntry>15} {db eval {PRAGMA wal_checkpoint}}
    return 0
  }







<
>
>
>
>
>
|
>
>







432
433
434
435
436
437
438

439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
  execsql {
    PRAGMA journal_mode = WAL;
    CREATE TABLE t1(a INTEGER PRIMARY KEY, b UNIQUE);
  }
} -thread r 1 {
  # This connection only ever reads the database. Therefore the 
  # busy-handler is not required. Disable it to check that this is true.

  #
  # UPDATE: That is no longer entirely true - as we don't use a blocking
  # lock to enter RECOVER state. Which means there is a small chance a
  # reader can see an SQLITE_BUSY.
  #
  while {[tt_continue]} {
    integrity_check
  }
  set {} ok
} -thread w 1 {

  proc wal_hook {zDb nEntry} {
    if {$nEntry>15} {db eval {PRAGMA wal_checkpoint}}
    return 0
  }