| Index: third_party/sqlite/src/test/walbak.test | 
| diff --git a/third_party/sqlite/src/test/walbak.test b/third_party/sqlite/src/test/walbak.test | 
| index fe5b99e1a464ad33dd5ab471761964919f0affdd..303a628a84bb9f39e83ae6adb63d3310e43fb360 100644 | 
| --- a/third_party/sqlite/src/test/walbak.test | 
| +++ b/third_party/sqlite/src/test/walbak.test | 
| @@ -48,7 +48,7 @@ do_test walbak-1.0 { | 
| } | 
| } {wal} | 
| do_test walbak-1.1 { | 
| -  file delete -force bak.db bak.db-journal bak.db-wal | 
| +  forcedelete bak.db bak.db-journal bak.db-wal | 
| db backup bak.db | 
| file size bak.db | 
| } [expr 3*1024] | 
| @@ -79,6 +79,9 @@ do_test walbak-1.6 { | 
| execsql { PRAGMA wal_checkpoint } | 
| list [file size test.db] [file size test.db-wal] | 
| } [list [expr 3*1024] [wal_file_size 6 1024]] | 
| +do_test walbak-1.6.1 { | 
| +  hexio_read test.db 18 2 | 
| +} {0202} | 
| do_test walbak-1.7 { | 
| execsql { | 
| CREATE TABLE t2(a, b); | 
| @@ -106,7 +109,7 @@ proc sig {{db db}} { | 
| } | 
| } | 
| db close | 
| -file delete test.db | 
| +delete_file test.db | 
| sqlite3 db test.db | 
| do_test walbak-2.1 { | 
| execsql { PRAGMA journal_mode = WAL } | 
| @@ -236,7 +239,7 @@ foreach {tn setup} { | 
| } | 
|  | 
| } { | 
| -  foreach f [glob -nocomplain test.db*] { file delete -force $f } | 
| +  foreach f [glob -nocomplain test.db*] { forcedelete $f } | 
|  | 
| eval $setup | 
|  | 
| @@ -271,9 +274,84 @@ foreach {tn setup} { | 
| execsql { SELECT * FROM t1 } | 
| } {1 2 3 4 5 6 7 8} | 
|  | 
| +  # Check that [db] is still in WAL mode. | 
| +  do_test walbak-3.$tn.5 { | 
| +    execsql { PRAGMA journal_mode } | 
| +  } {wal} | 
| +  do_test walbak-3.$tn.6 { | 
| +    execsql { PRAGMA wal_checkpoint } | 
| +    hexio_read test.db 18 2 | 
| +  } {0202} | 
| + | 
| +  # If it was not an in-memory database, check that [db2] is still in | 
| +  # rollback mode. | 
| +  if {[file exists test.db2]} { | 
| +    do_test walbak-3.$tn.7 { | 
| +      execsql { PRAGMA journal_mode } db2 | 
| +    } {wal} | 
| +    do_test walbak-3.$tn.8 { | 
| +      execsql { PRAGMA wal_checkpoint } | 
| +      hexio_read test.db 18 2 | 
| +    } {0202} | 
| +  } | 
| + | 
| db  close | 
| db2 close | 
| } | 
|  | 
| +#------------------------------------------------------------------------- | 
| +# Test that the following holds when a backup operation is run: | 
| +# | 
| +#   Source  |  Destination inital  |  Destination final | 
| +#   --------------------------------------------------- | 
| +#   Rollback   Rollback               Rollback | 
| +#   Rollback   WAL                    WAL | 
| +#   WAL        Rollback               WAL | 
| +#   WAL        WAL                    WAL | 
| +# | 
| +foreach {tn src dest dest_final} { | 
| +  1   delete    delete    delete | 
| +  2   delete    wal       wal | 
| +  3   wal       delete    wal | 
| +  4   wal       wal       wal | 
| +} { | 
| +  catch { db close } | 
| +  catch { db2 close } | 
| +  forcedelete test.db test.db2 | 
| + | 
| +  do_test walbak-4.$tn.1 { | 
| +    sqlite3 db test.db | 
| +    db eval "PRAGMA journal_mode = $src" | 
| +    db eval { | 
| +      CREATE TABLE t1(a, b); | 
| +      INSERT INTO t1 VALUES('I', 'II'); | 
| +      INSERT INTO t1 VALUES('III', 'IV'); | 
| +    } | 
| + | 
| +    sqlite3 db2 test.db2 | 
| +    db2 eval "PRAGMA journal_mode = $dest" | 
| +    db2 eval { | 
| +      CREATE TABLE t2(x, y); | 
| +      INSERT INTO t2 VALUES('1', '2'); | 
| +      INSERT INTO t2 VALUES('3', '4'); | 
| +    } | 
| +  } {} | 
| + | 
| +  do_test walbak-4.$tn.2 { execsql { PRAGMA journal_mode } db  } $src | 
| +  do_test walbak-4.$tn.3 { execsql { PRAGMA journal_mode } db2 } $dest | 
| + | 
| +  do_test walbak-4.$tn.4 { db backup test.db2 } {} | 
| +  do_test walbak-4.$tn.5 { | 
| +    execsql { SELECT * FROM t1 } db2 | 
| +  } {I II III IV} | 
| +  do_test walbak-4.$tn.5 { execsql { PRAGMA journal_mode } db2 } $dest_final | 
| + | 
| + | 
| +  db2 close | 
| +  do_test walbak-4.$tn.6 { file exists test.db2-wal } 0 | 
| +  sqlite3 db2 test.db2 | 
| +  do_test walbak-4.$tn.7 { execsql { PRAGMA journal_mode } db2 } $dest_final | 
| +} | 
| + | 
|  | 
| finish_test | 
|  |