Open windows files in binary mode. (CVS 193)

FossilOrigin-Name: e48b9f24faeee606aa2bda1666016d8a00b430a7
This commit is contained in:
drh 2001-03-20 12:55:13 +00:00
parent 6731b80200
commit 3494ffe930
13 changed files with 204 additions and 65 deletions

View File

@ -1 +1 @@
1.0.25
1.0.26

View File

@ -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 5 99%
65537..131073 3 100%
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 6 99%
65537..65541 3 100%

View File

@ -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

View File

@ -1 +1 @@
7564b223ab39f26a2fcf2afe150a98d10de132ea
e48b9f24faeee606aa2bda1666016d8a00b430a7

View File

@ -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 <unistd.h>
@ -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);

View File

@ -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 <sys/stat.h>
@ -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;

View File

@ -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
#

View File

@ -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

View File

@ -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

View File

@ -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 {

View File

@ -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
}

View File

@ -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

View File

@ -17,6 +17,11 @@ proc chng {date desc} {
puts "<DD><P><UL>$desc</UL></P></DD>"
}
chng {2001 Mar 20 (1.0.26)} {
<li>A serious bug fixed on Windows. Windows users should upgrade.
No impact to Unix.</li>
}
chng {2001 Mar 15 (1.0.25)} {
<li>Modify the test scripts to identify tests that depend on system
load and processor speed and