From: drh Date: Tue, 20 Mar 2001 12:55:13 +0000 (+0000) Subject: Open windows files in binary mode. (CVS 193) X-Git-Tag: version-3.6.10~5867 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3494ffe9306a19615db77af6abc8c797bebc14b3;p=thirdparty%2Fsqlite.git Open windows files in binary mode. (CVS 193) FossilOrigin-Name: e48b9f24faeee606aa2bda1666016d8a00b430a7 --- diff --git a/VERSION b/VERSION index 4a4127c371..8955a0173e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.25 +1.0.26 diff --git a/doc/report1.txt b/doc/report1.txt index cf5668d1b8..84d8de1d98 100644 --- a/doc/report1.txt +++ b/doc/report1.txt @@ -1,48 +1,121 @@ -The SQL database used for ACD contains 113 tables and indices implemented +The SQL database used for ACD contains 105 tables and indices implemented in GDBM. The following are statistics on the sizes of keys and data within these tables and indices. -Entries: 962080 -Size: 45573853 +Entries: 967089 +Size: 45896104 Avg Size: 48 -Key Size: 11045299 +Key Size: 11112265 Avg Key Size: 12 Max Key Size: 99 - 0..8 266 0% - 9..12 5485 0% - 13..16 73633 8% - 17..24 180918 27% - 25..32 209823 48% - 33..40 148995 64% - 41..48 76304 72% - 49..56 14346 73% - 57..64 15725 75% - 65..80 44916 80% - 81..96 127815 93% - 97..112 34769 96% - 113..128 13314 98% - 129..144 8098 99% - 145..160 3355 99% - 161..176 1159 99% - 177..192 629 99% - 193..208 221 99% - 209..224 210 99% - 225..240 129 99% - 241..256 57 99% - 257..288 496 99% - 289..320 60 99% - 321..352 37 99% - 353..384 46 99% - 385..416 22 99% + 0..8 263 0% + 9..12 5560 0% + 13..16 71394 7% + 17..24 180717 26% + 25..32 215442 48% + 33..40 151118 64% + 41..48 77479 72% + 49..56 13983 74% + 57..64 14481 75% + 65..80 41342 79% + 81..96 127098 92% + 97..112 38054 96% + 113..128 14197 98% + 129..144 8208 99% + 145..160 3326 99% + 161..176 1242 99% + 177..192 604 99% + 193..208 222 99% + 209..224 213 99% + 225..240 132 99% + 241..256 58 99% + 257..288 515 99% + 289..320 64 99% + 321..352 39 99% + 353..384 44 99% + 385..416 25 99% 417..448 24 99% 449..480 26 99% 481..512 27 99% - 513..1024 471 99% - 1025..2048 389 99% - 2049..4096 182 99% - 4097..8192 74 99% - 8193..16384 34 99% + 513..1024 470 99% + 1025..2048 396 99% + 2049..4096 187 99% + 4097..8192 78 99% + 8193..16384 35 99% +16385..32768 17 99% +32769..65536 6 99% +65537..65541 3 100% + +If the indices are omitted, the statistics for the 49 tables +become the following: + +Entries: 451103 +Size: 30930282 +Avg Size: 69 +Key Size: 1804412 +Avg Key Size: 4 +Max Key Size: 4 + + 0..24 89 0% + 25..32 9417 2% + 33..40 119162 28% + 41..48 68710 43% + 49..56 9539 45% + 57..64 12435 48% + 65..80 38650 57% + 81..96 126877 85% + 97..112 38030 93% + 113..128 14183 96% + 129..144 7668 98% + 145..160 3302 99% + 161..176 1238 99% + 177..192 597 99% + 193..208 217 99% + 209..224 211 99% + 225..240 130 99% + 241..256 57 99% + 257..288 100 99% + 289..320 62 99% + 321..352 34 99% + 353..384 43 99% + 385..416 24 99% + 417..448 24 99% + 449..480 25 99% + 481..512 27 99% + 513..1024 153 99% + 1025..2048 92 99% + 2049..4096 7 100% + +The 56 indices have these statistics: + +Entries: 512422 +Size: 14879828 +Avg Size: 30 +Key Size: 9253204 +Avg Key Size: 19 +Max Key Size: 99 + + 0..8 246 0% + 9..12 5486 1% + 13..16 70717 14% + 17..24 178246 49% + 25..32 205722 89% + 33..40 31951 96% + 41..48 8768 97% + 49..56 4444 98% + 57..64 2046 99% + 65..80 2691 99% + 81..96 202 99% + 97..112 11 99% + 113..144 527 99% + 145..160 20 99% + 161..288 406 99% + 289..1024 316 99% + 1025..2048 304 99% + 2049..4096 180 99% + 4097..8192 78 99% + 8193..16384 35 99% 16385..32768 17 99% -32769..65536 5 99% -65537..131073 3 100% +32769..65536 6 99% +65537..65541 3 100% diff --git a/manifest b/manifest index 140ae4d583..b184088746 100644 --- a/manifest +++ b/manifest @@ -1,19 +1,19 @@ -C Version\s1.0.25\s(CVS\s478) -D 2001-03-15T18:30:00 +C Open\swindows\sfiles\sin\sbinary\smode.\s(CVS\s193) +D 2001-03-20T12:55:13 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4 F Makefile.in 7efa81e2985b45ba73db27d55b70cc927f5abfd7 F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958 -F VERSION 80af39f0d764a13d57b92a38c6d21a7d4e5f7197 +F VERSION 900bbde4128ea2f66efdd32cae849187ea790e77 F configure 3dc1edb9dcf60215e31ff72b447935ab62211442 x F configure.in d892ca33db7e88a055519ce2f36dcb11020e8fff F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47 -F doc/report1.txt ad0a41513479f1be0355d1f3f074e66779ff2282 +F doc/report1.txt 734cbae63b1310cc643fe5e9e3da1ab55a79b99e F src/TODO 38a68a489e56e9fd4a96263e0ff9404a47368ad4 F src/build.c 7aa5879bf58ea6bbff22c26c59d1130021fa6ca4 -F src/dbbe.c 162d29b09ac379f160892c5795efc14099dcc8eb +F src/dbbe.c 1b3b8b5ded9e58d10d94d268cd12343b6212dbd1 F src/dbbe.h 0435a36906a839cce062608f51bd9d3e79878fec F src/dbbegdbm.c 5bfcb1b4ee47a98c5eae83041e9716cd3233fd0e -F src/dbbemem.c 576a0a0ad675063a1dd2c4aae68233232bd2deac +F src/dbbemem.c af740e5b4f2da3cb010b10592034f0627cdb0543 F src/delete.c b83dc815f83220a82df13f1f1f479187d305fe6a F src/ex/README b745b00acce2d892f60c40111dacdfc48e0c1c7a F src/ex/db.c f1419ae6c93e40b5ac6e39fe7efd95d868e6f9d7 @@ -45,16 +45,16 @@ F src/vdbe.h 031b7dd7d6f94c51dc37cdf26efe43d1619bb672 F src/where.c 478fde7c930969ca428de2d80b137959d25ee2fb F test/all.test 15cac2f6b2d4c55bf896212aff3cc9d6597b0490 F test/copy.test b77a1214bd7756f2849d5c4fa6e715c0ff0c34eb -F test/dbbe.test 27deeebf2a01da97cabaab8dc7f34ca3b51a0123 -F test/delete.test 402ee3ccb6e544582d24c573ef70b34d09583ae7 +F test/dbbe.test 03a6940807f8a1e7538897b4c802a7937677e053 +F test/delete.test e3e082a9dc764e3c259a8d175b31cd648e7c58f7 F test/expr.test 48273bf48a15d226c35829f702af4254c0ff6795 F test/func.test 02aed8845b98bde1043dda97455de1d37238ebb3 F test/in.test 2c560c0f55fb777029fd9bb5378f2997582aa603 F test/index.test ee060ef8912be47ba616e50cce7985259a68d58a F test/insert.test 66f4c3bd600fec8eb1e733b928cbe6fa885eff0c F test/insert2.test 732405e30331635af8d159fccabe835eea5cd0c6 -F test/lock.test a58af9b98b4351dc80896767781d8e6cab1b3666 -F test/main.test 83cfa58b0b9b69924cc915d5c50b12f0ac9e40e7 +F test/lock.test d8f0fc54f2a88969368c15490ea82811e2d7dd37 +F test/main.test 5b0ed3d586c15b9136b9fd4916dcc95086639387 F test/select1.test 68ff778c24fc8982e63dda37acb5b0396913adf7 F test/select2.test 04ac3bd69298f58c7d0883159bab42ab9ad6021c F test/select3.test a9234b8424b6c6d71de534f43b91ade9be68e9cc @@ -63,9 +63,9 @@ F test/select5.test e2b9d51d88cbd6c307c2c05b0ef55fe7ba811ac2 F test/sort.test d582086c4bb7df3fbf50aa72e69d7e235e9f8e31 F test/subselect.test bf8b251a92fb091973c1c469ce499dc9648a41d5 F test/table.test eaa25951c0f18615763cd3dc248ea4bc38739c05 -F test/tester.tcl 2afa947ed17c4633864fbd6506f20e26e884103c +F test/tester.tcl 01f881142be3bd8713abcea06747652067dafb78 F test/update.test 72c0c93310483b86dc904a992220c5b84c7ce100 -F test/vacuum.test 2127748ff4ddb409212efbb6d9fb9c469ea1b49c +F test/vacuum.test b95d8119a0a83dc6c4ac63888f8872f06199e065 F test/where.test bbab5a308055fb6087dc23d600b4ad2b72797397 F tool/gdbmdump.c 529e67c78d920606ba196326ea55b57b75fcc82b F tool/gdbmstat.c 56a9033531e5f5a48413f6ec436d5fb0341632c1 @@ -80,7 +80,7 @@ F www/arch.fig 4f246003b7da23bd63b8b0af0618afb4ee3055c8 F www/arch.png 8dae0766d42ed3de9ed013c1341a5792bcf633e6 F www/arch.tcl a40380c1fe0080c43e6cc5c20ed70731511b06be F www/c_interface.tcl 11be2d5826eb7d6efd629751d3b483c1ed78ba14 -F www/changes.tcl 1698d3b1636ec70c77d22aebccc12f43ba4c1c57 +F www/changes.tcl 6216d3a09f4cde137e635ab9aedda63adef086c0 F www/crosscompile.tcl c99efacb3aefaa550c6e80d91b240f55eb9fd33e F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c F www/fileformat.tcl cfb7fba80b7275555281ba2f256c00734bcdd1c9 @@ -91,7 +91,7 @@ F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f F www/tclsqlite.tcl 06f81c401f79a04f2c5ebfb97e7c176225c0aef2 F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad -P 4b0ba23807a57eaa3649622cff3be66cd75e7561 -R 9278e0d1b4fb4a58660b2bd6644e304b +P 7564b223ab39f26a2fcf2afe150a98d10de132ea +R c64bf80b88e496913947dd674ee75d13 U drh -Z 1678389fee545571636f80371eb62ce2 +Z 8308fb574f8a07fbde2a6679bf75d982 diff --git a/manifest.uuid b/manifest.uuid index d6eaddfe70..e7df5d144b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7564b223ab39f26a2fcf2afe150a98d10de132ea \ No newline at end of file +e48b9f24faeee606aa2bda1666016d8a00b430a7 \ No newline at end of file diff --git a/src/dbbe.c b/src/dbbe.c index 8e3516a1e7..da99eb9e5a 100644 --- a/src/dbbe.c +++ b/src/dbbe.c @@ -30,7 +30,7 @@ ** relatively simple to convert to a different database such ** as NDBM, SDBM, or BerkeleyDB. ** -** $Id: dbbe.c,v 1.23 2001/01/15 22:51:10 drh Exp $ +** $Id: dbbe.c,v 1.24 2001/03/20 12:55:14 drh Exp $ */ #include "sqliteInt.h" #include @@ -98,7 +98,11 @@ int sqliteDbbeOpenTempFile(const char *zDir, Dbbe *pBe, FILE **ppFile){ zFile = 0; sqliteSetString(&zFile, zDir, zBuf, 0); }while( access(zFile,0)==0 && limit-- >= 0 ); +#if OS_WIN + *ppFile = pBe->apTemp[i] = fopen(zFile, "w+b"); +#else *ppFile = pBe->apTemp[i] = fopen(zFile, "w+"); +#endif if( pBe->apTemp[i]==0 ){ rc = SQLITE_ERROR; sqliteFree(zFile); diff --git a/src/dbbemem.c b/src/dbbemem.c index 4e9f78e044..6bd4079d27 100644 --- a/src/dbbemem.c +++ b/src/dbbemem.c @@ -28,7 +28,7 @@ ** ** This file uses an in-memory hash table as the database backend. ** -** $Id: dbbemem.c,v 1.8 2001/02/19 23:48:17 drh Exp $ +** $Id: dbbemem.c,v 1.9 2001/03/20 12:55:14 drh Exp $ */ #include "sqliteInt.h" #include @@ -721,7 +721,12 @@ static int sqliteMemDelete(DbbeCursor *pCursr, int nKey, char *pKey){ ** directory. */ static int sqliteMemOpenTempFile(Dbbe *pDbbe, FILE **ppFile){ +#if OS_UNIX const char *zTemps[] = { "/usr/tmp", "/var/tmp", "/tmp", "/temp", 0}; +#endif +#if OS_WIN + const char *zTemps[] = { "c:/temp", "c:", 0}; +#endif const char *zDir; int i; struct stat statbuf; diff --git a/test/dbbe.test b/test/dbbe.test index e1a079e0bc..d30047bc15 100644 --- a/test/dbbe.test +++ b/test/dbbe.test @@ -23,7 +23,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is exercising the code in dbbe.c. # -# $Id: dbbe.test,v 1.5 2001/01/31 13:28:09 drh Exp $ +# $Id: dbbe.test,v 1.6 2001/03/20 12:55:14 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -66,6 +66,8 @@ do_test dbbe-1.4 { lappend v $msg } {1 {not a directory: "testdb"}} +if {$::tcl_platform(platform)!="windows"} { + # Access permission denied on the directory. # do_test dbbe-1.5 { @@ -100,6 +102,8 @@ do_test dbbe-1.6b { lappend v $msg } {0 {}} +} ;# End of if( platform!=windows ) + # Make sure a table can be accessed by either uppercase or lowercase # names # diff --git a/test/delete.test b/test/delete.test index b00e3c0d3e..d8c6f56185 100644 --- a/test/delete.test +++ b/test/delete.test @@ -23,7 +23,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is testing the DELETE FROM statement. # -# $Id: delete.test,v 1.6 2000/06/21 13:59:13 drh Exp $ +# $Id: delete.test,v 1.7 2001/03/20 12:55:14 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -79,4 +79,43 @@ do_test delete-4.2 { lappend v $msg } {1 {no such function: xyzzy}} +# Lots of deletes +# +do_test delete-5.1 { + execsql {DELETE FROM table1} + execsql {SELECT count(*) FROM table1} +} {} +do_test delete-5.2 { + for {set i 1} {$i<=200} {incr i} { + execsql "INSERT INTO table1 VALUES($i,[expr {$i*$i}])" + } + execsql {SELECT count(*) FROM table1} +} {200} +do_test delete-5.3 { + for {set i 1} {$i<=200} {incr i 4} { + execsql "DELETE FROM table1 WHERE f1==$i" + } + execsql {SELECT count(*) FROM table1} +} {150} +do_test delete-5.4 { + execsql "DELETE FROM table1 WHERE f1>50" + execsql {SELECT count(*) FROM table1} +} {37} +do_test delete-5.5 { + for {set i 1} {$i<=70} {incr i 3} { + execsql "DELETE FROM table1 WHERE f1==$i" + } + execsql {SELECT f1 FROM table1 ORDER BY f1} +} {2 3 6 8 11 12 14 15 18 20 23 24 26 27 30 32 35 36 38 39 42 44 47 48 50} +do_test delete-5.6 { + for {set i 1} {$i<40} {incr i} { + execsql "DELETE FROM table1 WHERE f1==$i" + } + execsql {SELECT f1 FROM table1 ORDER BY f1} +} {42 44 47 48 50} +do_test delete-5.7 { + execsql "DELETE FROM table1 WHERE f1!=48" + execsql {SELECT f1 FROM table1 ORDER BY f1} +} {48} + finish_test diff --git a/test/lock.test b/test/lock.test index 0de1842684..bae3864e25 100644 --- a/test/lock.test +++ b/test/lock.test @@ -23,9 +23,9 @@ # This file implements regression tests for SQLite library. The # focus of this script is database locks. # -# $Id: lock.test,v 1.6 2001/03/15 18:21:22 drh Exp $ +# $Id: lock.test,v 1.7 2001/03/20 12:55:14 drh Exp $ -if {$dbprefix=="gdbm:"} { +if {$dbprefix=="gdbm:" && $::tcl_platform(platform)!="windows"} { set testdir [file dirname $argv0] source $testdir/tester.tcl diff --git a/test/main.test b/test/main.test index 165d51506c..f236d26b09 100644 --- a/test/main.test +++ b/test/main.test @@ -23,7 +23,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is exercising the code in main.c. # -# $Id: main.test,v 1.4 2000/12/10 18:23:52 drh Exp $ +# $Id: main.test,v 1.5 2001/03/20 12:55:14 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -81,6 +81,7 @@ do_test main-1.13 { # do_test main-2.0 { catch {db close} + foreach f [glob -nocomplain testdb/*] {file delete -force $f} file delete -force testdb file mkdir testdb set fd [open testdb/sqlite_master.tbl w] @@ -94,6 +95,7 @@ do_test main-2.0 { # do_test main-3.1 { catch {db close} + foreach f [glob -nocomplain testdb/*] {file delete -force $f} file delete -force testdb sqlite db testdb set v [catch {execsql {SELECT * from T1 where x!!5}} msg] @@ -101,6 +103,7 @@ do_test main-3.1 { } {1 {unrecognized token: "!!"}} do_test main-3.2 { catch {db close} + foreach f [glob -nocomplain testdb/*] {file delete -force $f} file delete -force testdb sqlite db testdb set v [catch {execsql {SELECT * from T1 where ~x}} msg] @@ -108,6 +111,7 @@ do_test main-3.2 { } {1 {unrecognized token: "~"}} do_test main-3.3 { catch {db close} + foreach f [glob -nocomplain testdb/*] {file delete -force $f} file delete -force testdb sqlite db testdb set v [catch {execsql {SELECT a|b from T1 where x}} msg] @@ -116,6 +120,7 @@ do_test main-3.3 { do_test main-3.3 { catch {db close} + foreach f [glob -nocomplain testdb/*] {file delete -force $f} file delete -force testdb sqlite db testdb execsql { diff --git a/test/tester.tcl b/test/tester.tcl index 6d55d5fa1a..55af445248 100644 --- a/test/tester.tcl +++ b/test/tester.tcl @@ -23,7 +23,7 @@ # This file implements some common TCL routines used for regression # testing the SQLite library # -# $Id: tester.tcl,v 1.11 2001/03/15 18:21:22 drh Exp $ +# $Id: tester.tcl,v 1.12 2001/03/20 12:55:14 drh Exp $ # Create a test database # @@ -36,6 +36,9 @@ if {![info exists dbprefix]} { } switch $dbprefix { gdbm: { + foreach f [glob -nocomplain testdb/*] { + catch {file delete -force $f} + } if {[catch {file delete -force testdb}]} { exec rm -rf testdb } diff --git a/test/vacuum.test b/test/vacuum.test index 802a70021e..157bf17020 100644 --- a/test/vacuum.test +++ b/test/vacuum.test @@ -23,7 +23,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is testing the VACUUM statement. # -# $Id: vacuum.test,v 1.2 2000/10/19 14:10:10 drh Exp $ +# $Id: vacuum.test,v 1.3 2001/03/20 12:55:14 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -65,6 +65,7 @@ do_test vacuum-1.3 { set a3 [file mtime testdb/index1.tbl] expr {$a1>$b1 && $a2==$b2 && $a3==$b3} } {1} +if {$::tcl_platform(platform)!="windows"} { testif gdbm: do_test vacuum-1.4 { set b1 [file mtime testdb/test1.tbl] @@ -77,6 +78,6 @@ do_test vacuum-1.4 { set a3 [file mtime testdb/index1.tbl] expr {$a1>$b1 && $a2>$b2 && $a3>$b3} } {1} - +} ;# End if( platform!=windows ) finish_test diff --git a/www/changes.tcl b/www/changes.tcl index 49204119f3..c12e98e825 100644 --- a/www/changes.tcl +++ b/www/changes.tcl @@ -17,6 +17,11 @@ proc chng {date desc} { puts "

    $desc

" } +chng {2001 Mar 20 (1.0.26)} { +
  • A serious bug fixed on Windows. Windows users should upgrade. + No impact to Unix.
  • +} + chng {2001 Mar 15 (1.0.25)} {
  • Modify the test scripts to identify tests that depend on system load and processor speed and