-C Tests\sto\simprove\scoverage\sof\svdbeaux.c.\s(CVS\s2201)
-D 2005-01-12T09:10:40
+C Tests\sto\simprove\scoverage\sof\smain.c.\s(CVS\s2202)
+D 2005-01-12T12:44:04
F Makefile.in ecf441ac5ca1ccfc8748a8a9537706e69893dfa4
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
F src/insert.c f6b69e40e8938f63a2368cbcb5087a56098cf632
F src/legacy.c d58ea507bce885298a2c8c3cbb0f4bff5d47830b
-F src/main.c a05e1e50406d2776272c1470077136f63866bbe2
+F src/main.c 977c401767bce91952cd3c86f28c35efc1b50e75
F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070
F src/os.h c92a675533c75fea0f53559f34c7b91c5afe1a9d
F src/os_common.h 0e7f428ba0a6c40a61bc56c4e96f493231301b73
F src/sqlite.h.in 0d5e48e506845b74a845c9470e01d3f472b59611
F src/sqliteInt.h 087d21946d79c6eec1b84a32122def5fd99ee03b
F src/table.c 25b3ff2b39b7d87e8d4a5da0713d68dfc06cbee9
-F src/tclsqlite.c 75a8dc9cd7ac0f41482bd7b96b99d54e62b6e98f
-F src/test1.c 30584dd0b7eb501534c5f4b2292b13a32ef58651
+F src/tclsqlite.c 8419f424ebcc6ae0d391f21a991638cb20c2ffc6
+F src/test1.c 540e1f51cf37d5a05871562e87d976909ab517a1
F src/test2.c b11fa244fff02190707dd0879987c37c75e61fc8
F src/test3.c a72f20066cccd5a7b9f20b7b78fa9b05b47b3020
F src/test4.c 7c6b9fc33dd1f3f93c7f1ee6e5e6d016afa6c1df
F test/btree5.test 8e5ff32c02e685d36516c6499add9375fe1377f2
F test/btree6.test a5ede6bfbbb2ec8b27e62813612c0f28e8f3e027
F test/btree7.test a6d3b842db22af97dd14b989e90a2fd96066b72f
-F test/capi2.test 8279d1d5ca1f9b518d78fefd01fd58958c7240d6
+F test/capi2.test 325e8d68fe7b3c518f73a37f039c52278be8f101
F test/capi3.test 3b33bf7c8836028835354c055989314e9c969c5c
F test/capi3b.test 5b6a66f9f295f79f443b5d3f33187fa5ef6cf336
F test/collate1.test f79736d2ebf5492167ee4d1f4ab4c09dda776b03
F test/lastinsert.test b6a1db3e1ce2d3f0d6afe99d445084f543b6feaa
F test/laststmtchanges.test 07cbdabc52407c29e40abc25050f2434f044a6b1
F test/limit.test 0225cadf96f199566b6d1ae7b5642492878ec45a
-F test/lock.test 32fe28e5030f25f23bcf6beef440675b0d848413
+F test/lock.test a19aab9a963273fe61c1058e3d1b648d6a0a2425
F test/lock2.test 59c3dd7d9b24d1bf7ec91b2d1541c37e97939d5f
F test/lock3.test 615111293cf32aa2ed16d01c6611737651c96fb9
F test/main.test a60a1d234b5f5784097973bd395514ca56003ef1
-F test/malloc.test c3985c0a5a2f28dbfdb68a4e07886f9090feeda1
+F test/malloc.test 5a18f953212cc14ec999b5abf9d2a781a18d7a1e
F test/memdb.test 532aac7128a3da494cddc4461d76c6e3988f771b
F test/memleak.test f1fa233f8295dd1d955a00d5e5ee857850f27f29
F test/minmax.test e7048476940df0af11d0f2cf687572f557cd0b29
F test/subselect.test ff3850d0aab1443dafa4ecbdab1d01e58e7b366d
F test/table.test b8b0bee2ac2f3d36a674bc68344c1bdd80e99a18
F test/tableapi.test b21ab097e87a5484bb61029e69e1a4e5c5e65ede
-F test/tclsqlite.test 8b9dae3b68a899e5cbaebe6bb51cfc27f2503c6d
+F test/tclsqlite.test f467d9062e17c1ace54467e6fba5ce3ca176c0fe
F test/temptable.test 63a16e3ad19adf073cfbcdf7624c92ac5236522c
F test/tester.tcl 071ad70ee2c1d3393e20baabaac03f07e7925cfe
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
F www/whentouse.tcl c3b50d3ac31c54be2a1af9b488a89d22f1e6e746
-P 319bb4a9064deb062a888fdc31067619c9b749bb
-R eca04ac646dc0adf8b62dade6edd7859
+P 2b3e21ce2e8126ec2851751546094c3a2c831942
+R 5afae1e8307f40841f1da323337aa8a5
U danielk1977
-Z bac0bd5515f392b48e8053527f28ff2a
+Z 16673a65fc0ffd926dfd73f55b52e6d7
-2b3e21ce2e8126ec2851751546094c3a2c831942
\ No newline at end of file
+4e28c82adabb58ad9f79ed829734a2ff569a7c05
\ No newline at end of file
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
-** $Id: main.c,v 1.269 2005/01/08 18:42:28 drh Exp $
+** $Id: main.c,v 1.270 2005/01/12 12:44:04 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "os.h"
** is accessed.
*/
sqlite3RegisterBuiltinFunctions(db);
- if( rc==SQLITE_OK ){
- sqlite3Error(db, SQLITE_OK, 0);
- db->magic = SQLITE_MAGIC_OPEN;
- }else{
- sqlite3Error(db, rc, "%s", zErrMsg, 0);
- if( zErrMsg ) sqliteFree(zErrMsg);
- db->magic = SQLITE_MAGIC_CLOSED;
- }
+ sqlite3Error(db, SQLITE_OK, 0);
+ db->magic = SQLITE_MAGIC_OPEN;
opendb_out:
if( sqlite3_errcode(db)==SQLITE_OK && sqlite3_malloc_failed ){
*************************************************************************
** A TCL Interface to SQLite
**
-** $Id: tclsqlite.c,v 1.113 2005/01/12 00:08:25 drh Exp $
+** $Id: tclsqlite.c,v 1.114 2005/01/12 12:44:04 danielk1977 Exp $
*/
#ifndef NO_TCL /* Omit this whole file if TCL is unavailable */
"errorcode", "eval", "function",
"last_insert_rowid", "onecolumn", "progress",
"rekey", "timeout", "total_changes",
- "trace",
+ "trace", "version",
0
};
enum DB_enum {
DB_ERRORCODE, DB_EVAL, DB_FUNCTION,
DB_LAST_INSERT_ROWID, DB_ONECOLUMN, DB_PROGRESS,
DB_REKEY, DB_TIMEOUT, DB_TOTAL_CHANGES,
- DB_TRACE
+ DB_TRACE, DB_VERSION
};
/* don't leave trailing commas on DB_enum, it confuses the AIX xlc compiler */
break;
}
+ /* $db version
+ **
+ ** Return the version string for this database.
+ */
+ case DB_VERSION: {
+ Tcl_SetResult(interp, (char *)sqlite3_libversion(), TCL_STATIC);
+ break;
+ }
+
} /* End of the SWITCH statement */
return rc;
** is not included in the SQLite library. It is used for automated
** testing of the SQLite library.
**
-** $Id: test1.c,v 1.120 2005/01/12 07:15:05 danielk1977 Exp $
+** $Id: test1.c,v 1.121 2005/01/12 12:44:04 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "tcl.h"
if( argc!=2 ){
Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
- " FILENAME\"", 0);
+ " DB\"", 0);
return TCL_ERROR;
}
if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR;
#endif
if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR;
+ Tcl_SetResult(interp, (char *)errorName(rc), 0);
return TCL_OK;
}
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
- db = StmtToDb(pStmt);
+ if( pStmt ){
+ db = StmtToDb(pStmt);
+ }
rc = sqlite3_finalize(pStmt);
Tcl_SetResult(interp, (char *)errorName(rc), TCL_STATIC);
- if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR;
+ if( db && sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR;
return TCL_OK;
}
if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR;
rc = sqlite3_reset(pStmt);
- if( sqlite3TestErrCode(interp, StmtToDb(pStmt), rc) ) return TCL_ERROR;
+ if( pStmt &&
+ sqlite3TestErrCode(interp, StmtToDb(pStmt), rc) ) return TCL_ERROR;
+ Tcl_SetResult(interp, (char *)errorName(rc), TCL_STATIC);
if( rc ){
return TCL_ERROR;
}
# This file implements regression tests for SQLite library. The
# focus of this script testing the callback-free C/C++ API.
#
-# $Id: capi2.test,v 1.22 2004/11/22 10:02:22 danielk1977 Exp $
+# $Id: capi2.test,v 1.23 2005/01/12 12:44:04 danielk1977 Exp $
#
set testdir [file dirname $argv0]
sqlite3_finalize $VM1
} {SQLITE_OK}
+do_test capi2-10.1 {
+ sqlite3_finalize 0
+} {SQLITE_OK}
+do_test capi2-10.2 {
+ sqlite3_reset 0
+} {SQLITE_OK}
+
db2 close
finish_test
# This file implements regression tests for SQLite library. The
# focus of this script is database locks.
#
-# $Id: lock.test,v 1.29 2004/11/22 10:02:23 danielk1977 Exp $
+# $Id: lock.test,v 1.30 2005/01/12 12:44:04 danielk1977 Exp $
set testdir [file dirname $argv0]
db2 timeout 400
execsql BEGIN
execsql {UPDATE t1 SET a = 0 WHERE 0}
- # catchsql BEGIN db2
- catchsql {UPDATE t1 SET a = 0 WHERE 0} db2
+ catchsql {BEGIN EXCLUSIVE;} db2
} {1 {database is locked}}
do_test lock-2.9 {
db2 timeout 0
# special feature is used to see what happens in the library if a malloc
# were to really fail due to an out-of-memory situation.
#
-# $Id: malloc.test,v 1.15 2005/01/12 09:10:41 danielk1977 Exp $
+# $Id: malloc.test,v 1.16 2005/01/12 12:44:04 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
return
}
+# Usage: do_malloc_test <test number> <options...>
+#
+# The first argument, <test number>, is an integer used to name the
+# tests executed by this proc. Options are as follows:
+#
+# -tclprep TCL script to run to prepare test.
+# -sqlprep SQL script to run to prepare test.
+# -tclbody TCL script to run with IO error simulation.
+# -sqlbody TCL script to run with IO error simulation.
+#
+proc do_malloc_test {tn args} {
+ array set ::mallocopts $args
+
+ set ::go 1
+ for {set ::n 1} {$::go} {incr ::n} {
+
+ do_test malloc-$tn.$::n {
+
+ sqlite_malloc_fail 0
+ catch {db close}
+ catch {file delete -force test.db}
+ catch {file delete -force test.db-journal}
+ catch {file delete -force test2.db}
+ catch {file delete -force test2.db-journal}
+ set ::DB [sqlite3 db test.db]
+
+ if {[info exists ::mallocopts(-tclprep)]} {
+ eval $::mallocopts(-tclprep)
+ }
+ if {[info exists ::mallocopts(-sqlprep)]} {
+ execsql $::mallocopts(-sqlprep)
+ }
+
+ sqlite_malloc_fail $::n
+ set ::mallocbody {}
+ if {[info exists ::mallocopts(-tclbody)]} {
+ append ::mallocbody "$::mallocopts(-tclbody)\n"
+ }
+ if {[info exists ::mallocopts(-sqlbody)]} {
+ append ::mallocbody "db eval {$::mallocopts(-sqlbody)}"
+ }
+
+ set v [catch $::mallocbody msg]
+
+ set leftover [lindex [sqlite_malloc_stat] 2]
+ if {$leftover>0} {
+ if {$leftover>1} {puts "\nLeftover: $leftover\nReturn=$v Message=$msg"}
+ set ::go 0
+ set v {1 1}
+ } else {
+ set v2 [expr {$msg=="" || $msg=="out of memory"}]
+ if {!$v2} {puts "\nError message returned: $msg"}
+ lappend v $v2
+ }
+ } {1 1}
+ }
+}
+
+if 0 {
+
for {set go 1; set i 1} {$go} {incr i} {
do_test malloc-1.$i {
sqlite_malloc_fail 0
} {0}
}
+
# This block tests that malloc() failures that occur whilst commiting
# a multi-file transaction are handled correctly.
#
-for {set go 1; set i 1} {$go} {incr i} {
- do_test malloc-9.$i {
- sqlite_malloc_fail 0
- catch {db close}
- catch {file delete -force test.db}
- catch {file delete -force test.db-journal}
- catch {file delete -force test2.db}
- catch {file delete -force test2.db-journal}
+do_malloc_test 9 -sqlprep {
+ ATTACH 'test2.db' as test2;
+ CREATE TABLE abc1(a, b, c);
+ CREATE TABLE test2.abc2(a, b, c);
+} -sqlbody {
+ BEGIN;
+ INSERT INTO abc1 VALUES(1, 2, 3);
+ INSERT INTO abc2 VALUES(1, 2, 3);
+ COMMIT;
+}
- sqlite3 db test.db
- execsql {
- ATTACH 'test2.db' as test2;
- CREATE TABLE abc1(a, b, c);
- CREATE TABLE test2.abc2(a, b, c);
- }
+}
- sqlite_malloc_fail $i
- set v [catch {execsql {
- BEGIN;
- INSERT INTO abc1 VALUES(1, 2, 3);
- INSERT INTO abc2 VALUES(1, 2, 3);
- COMMIT;
- }} msg]
- set leftover [lindex [sqlite_malloc_stat] 2]
- if {$leftover>0} {
- if {$leftover>1} {puts "\nLeftover: $leftover\nReturn=$v Message=$msg"}
- set ::go 0
- set v {1 1}
- } else {
- set v2 [expr {$msg=="" || $msg=="out of memory"}]
- if {!$v2} {puts "\nError message returned: $msg"}
- lappend v $v2
- }
- } {1 1}
+# This block tests malloc() failures that occur while opening a
+# connection to a database.
+do_malloc_test 10 -sqlprep {
+ CREATE TABLE abc(a, b, c);
+} -tclbody {
+ set ::DB [sqlite3 db2 test.db]
+ db2 eval {SELECT * FROM sqlite_master}
+ db2 close
+}
+
+# This block tests malloc() failures that occur within calls to
+# sqlite3_create_function().
+do_malloc_test 11 -tclbody {
+ if {[string match [sqlite3_create_function $::DB] SQLITE_NOMEM]==0} {
+ error "out of memory"
+ }
}
+do_malloc_test 12 -tclbody {
+ set sql16 [encoding convertto unicode "SELECT * FROM sqlite_master"]
+ append sql16 "\00\00"
+ set ::STMT [sqlite3_prepare16 $::DB $sql16 -1 DUMMY]
+ sqlite3_finalize $::STMT
+}
# Ensure that no file descriptors were leaked.
do_test malloc-99.X {
# interface is pretty well tested. This file contains some addition
# tests for fringe issues that the main test suite does not cover.
#
-# $Id: tclsqlite.test,v 1.35 2004/12/17 15:41:13 tpoindex Exp $
+# $Id: tclsqlite.test,v 1.36 2005/01/12 12:44:04 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
do_test tcl-1.2 {
set v [catch {db bogus} msg]
lappend v $msg
-} {1 {bad option "bogus": must be authorizer, busy, changes, close, collate, collation_needed, commit_hook, complete, copy, errorcode, eval, function, last_insert_rowid, onecolumn, progress, rekey, timeout, total_changes, or trace}}
+} {1 {bad option "bogus": must be authorizer, busy, changes, close, collate, collation_needed, commit_hook, complete, copy, errorcode, eval, function, last_insert_rowid, onecolumn, progress, rekey, timeout, total_changes, trace, or version}}
do_test tcl-1.3 {
execsql {CREATE TABLE t1(a int, b int)}
execsql {INSERT INTO t1 VALUES(10,20)}
return_test 0
} {}
+do_test tcl-7.1 {
+ db version
+ expr 0
+} {0}
+
finish_test