1# 2005 August 28 2# 3# The author disclaims copyright to this source code. In place of 4# a legal notice, here is a blessing: 5# 6# May you do good and not evil. 7# May you find forgiveness for yourself and forgive others. 8# May you share freely, never taking more than you give. 9# 10#*********************************************************************** 11# This file implements regression tests for SQLite library. 12# 13# This file implements tests to verify that fsync is disabled when 14# pragma synchronous=off even for multi-database commits. 15# 16# $Id: sync.test,v 1.6 2007/10/09 08:29:33 danielk1977 Exp $ 17 18set testdir [file dirname $argv0] 19source $testdir/tester.tcl 20 21# 22# These tests are only applicable when pager pragma are 23# enabled. Also, since every test uses an ATTACHed database, they 24# are only run when ATTACH is enabled. 25# 26ifcapable !pager_pragmas||!attach { 27 finish_test 28 return 29} 30 31set sqlite_sync_count 0 32proc cond_incr_sync_count {adj} { 33 global sqlite_sync_count 34 if {$::tcl_platform(platform) == "windows"} { 35 incr sqlite_sync_count $adj 36 } { 37 ifcapable !dirsync { 38 incr sqlite_sync_count $adj 39 } 40 } 41} 42 43do_test sync-1.1 { 44 set sqlite_sync_count 0 45 forcedelete test2.db 46 forcedelete test2.db-journal 47 execsql { 48 PRAGMA fullfsync=OFF; 49 CREATE TABLE t1(a,b); 50 ATTACH DATABASE 'test2.db' AS db2; 51 CREATE TABLE db2.t2(x,y); 52 } 53 cond_incr_sync_count 2 54 set sqlite_sync_count 55} 8 56ifcapable pager_pragmas { 57 do_test sync-1.2 { 58 set sqlite_sync_count 0 59 execsql { 60 PRAGMA main.synchronous=on; 61 PRAGMA db2.synchronous=on; 62 BEGIN; 63 INSERT INTO t1 VALUES(1,2); 64 INSERT INTO t2 VALUES(3,4); 65 COMMIT; 66 } 67 cond_incr_sync_count 3 68 set sqlite_sync_count 69 } 8 70} 71do_test sync-1.3 { 72 set sqlite_sync_count 0 73 execsql { 74 PRAGMA main.synchronous=full; 75 PRAGMA db2.synchronous=full; 76 BEGIN; 77 INSERT INTO t1 VALUES(3,4); 78 INSERT INTO t2 VALUES(5,6); 79 COMMIT; 80 } 81 cond_incr_sync_count 3 82 set sqlite_sync_count 83} 10 84ifcapable pager_pragmas { 85 do_test sync-1.4 { 86 set sqlite_sync_count 0 87 execsql { 88 PRAGMA main.synchronous=off; 89 PRAGMA db2.synchronous=off; 90 BEGIN; 91 INSERT INTO t1 VALUES(5,6); 92 INSERT INTO t2 VALUES(7,8); 93 COMMIT; 94 } 95 set sqlite_sync_count 96 } 0 97} 98 99 100finish_test 101