mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Begin adding the ability to remove unused features at compile-time and still
have all the tests pass. (CVS 2033) FossilOrigin-Name: 2aa506ccb003a25555b414772002d0130db93052
This commit is contained in:
@ -308,7 +308,7 @@ parse.h: parse.c
|
||||
|
||||
parse.c: $(TOP)/src/parse.y lemon@BUILD_EXEEXT@
|
||||
cp $(TOP)/src/parse.y .
|
||||
./lemon parse.y
|
||||
./lemon $(OPTS) parse.y
|
||||
|
||||
pragma.lo: $(TOP)/src/pragma.c $(HDR)
|
||||
$(LTCOMPILE) $(TCL_FLAGS) -c $(TOP)/src/pragma.c
|
||||
|
2
main.mk
2
main.mk
@ -277,7 +277,7 @@ parse.h: parse.c
|
||||
|
||||
parse.c: $(TOP)/src/parse.y lemon
|
||||
cp $(TOP)/src/parse.y .
|
||||
./lemon parse.y
|
||||
./lemon $(OPTS) parse.y
|
||||
|
||||
pragma.o: $(TOP)/src/pragma.c $(HDR)
|
||||
$(TCCX) $(TCL_FLAGS) -c $(TOP)/src/pragma.c
|
||||
|
28
manifest
28
manifest
@ -1,6 +1,6 @@
|
||||
C Move\saffinity.html\sinto\sthe\sattic.\s(CVS\s2032)
|
||||
D 2004-10-26T16:34:38
|
||||
F Makefile.in 52c1cc106cad9148d4b7cb387b458e82dc86b339
|
||||
C Begin\sadding\sthe\sability\sto\sremove\sunused\sfeatures\sat\scompile-time\sand\sstill\nhave\sall\sthe\stests\spass.\s(CVS\s2033)
|
||||
D 2004-10-30T20:23:09
|
||||
F Makefile.in 9e90c685d69f09039015a6b1f3b0a48e9738c9e5
|
||||
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
|
||||
F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
|
||||
F VERSION 342b6d5fde93b6d45023e2fee0163dda6464b9d6
|
||||
@ -16,7 +16,7 @@ F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538
|
||||
F doc/report1.txt a031aaf37b185e4fa540223cb516d3bccec7eeac
|
||||
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895
|
||||
F ltmain.sh f6b283068efa69f06eb8aa1fe4bddfdbdeb35826
|
||||
F main.mk bf65bb9f839aa8777796c9846816be590a7cd4b0
|
||||
F main.mk c7c97f809e5e7897bc843db64f692c7ef9013a92
|
||||
F mkdll.sh 468d4f41d3ea98221371df4825cfbffbaac4d7e4
|
||||
F mkopcodec.awk 80311cdeb16d78017cc62e4ad6c6d008e5fe0e17
|
||||
F mkopcodeh.awk 4090944e4de0a2ccb99aa0083290f73bce4db406
|
||||
@ -64,7 +64,7 @@ F src/sqlite.h.in 4f97b5907acfd2a5068cb0cec9d5178816734db7
|
||||
F src/sqliteInt.h 008c205896a1c531ec6249de20ecfe23c89ae243
|
||||
F src/table.c 25b3ff2b39b7d87e8d4a5da0713d68dfc06cbee9
|
||||
F src/tclsqlite.c 0302e3f42f015d132d1291f3388c06e86c24a008
|
||||
F src/test1.c 3d78e5d827bf5d037f697c233c5934d45af46cb5
|
||||
F src/test1.c 23fd40832736c46b9c2d897fa13c7d913a3f1626
|
||||
F src/test2.c b11fa244fff02190707dd0879987c37c75e61fc8
|
||||
F src/test3.c 5b5b0f3d11b097399c1054fff73d8f3711092301
|
||||
F src/test4.c 7c6b9fc33dd1f3f93c7f1ee6e5e6d016afa6c1df
|
||||
@ -74,7 +74,7 @@ F src/trigger.c b51a120d53e8b85359be11bf5e50854e5725fe3d
|
||||
F src/update.c 174c3b593b8f4928e510a51ec309e8ce69d2371c
|
||||
F src/utf.c f4f83acd73389090e32d6589d307fc55d794c7ed
|
||||
F src/util.c f4ab796b9def353feed2191d7ce8e39a0f5059cd
|
||||
F src/vacuum.c 257de36230cb988842f66eb08dc6c0250b8e05f3
|
||||
F src/vacuum.c ecb4a2c6f1ac5cc9b394dc64d3bb14ca650c4f60
|
||||
F src/vdbe.c adbcdbc817ae2f411904cd12582f06fc1ca8be1e
|
||||
F src/vdbe.h 067ca8d6750ba4f69a50284765e5883dee860181
|
||||
F src/vdbeInt.h 6017100adff362b8dfa37a69e3f1431f084bfa5b
|
||||
@ -87,7 +87,7 @@ F test/attach.test feb2ce54e78688df4c84553416d5aec3b2a0112e
|
||||
F test/attach2.test f7795123d3051ace1672b6d23973da6435de3745
|
||||
F test/attach3.test 6d060986ff004ebb89e1876a331d96c6bb62269e
|
||||
F test/auth.test 1cc252d9e7b3bdc1314199cbf3a0d3c5ed026c21
|
||||
F test/bigfile.test 62722ac4b420dfbcdceb137b8634e2cf2865fe27
|
||||
F test/bigfile.test d3744a8821ce9abb8697f2826a3e3d22b719e89f
|
||||
F test/bigrow.test f0aeb7573dcb8caaafea76454be3ade29b7fc747
|
||||
F test/bind.test a8682ba41433b93bb36a4213a43f282ca9aec5a9
|
||||
F test/blob.test 8727a7b46b2073a369cfc9bcb6f54dd366b9d884
|
||||
@ -110,7 +110,7 @@ F test/conflict.test c5b849b01cfbe0a4f63a90cba6f68e2fe3a75f87
|
||||
F test/corrupt.test 0080ddcece23e8ba47c44608c4fb73fd4d1d8ce2
|
||||
F test/crash.test a3f6d27f7cb7f7bd752461db1e14f7c781ecedc3
|
||||
F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
|
||||
F test/date.test fd3db29bba089578b1b008e3511ea9e74840377a
|
||||
F test/date.test b4f8bb8e3e3ee6eb3efa1ccef47cfe206dafe4b8
|
||||
F test/delete.test ec0b455f2dcc0e189d96ee438438ba026c4e51d8
|
||||
F test/delete2.test 050a3a6e8ea0f83aed817d164b16af2a499fb452
|
||||
F test/diskfull.test e2f6cfd868713ead06dc82b84a4938e868128fc0
|
||||
@ -125,7 +125,7 @@ F test/in.test b92a2df9162e1cbd33c6449a29a05e6955b1741a
|
||||
F test/index.test 31ed90af028d1ec9a3a8a4f0d7021717ba05dd16
|
||||
F test/insert.test ebbab63db4ad69395a058514bccb3cdb0a029d48
|
||||
F test/insert2.test 614a29d3ed7dd0d8644a059c6d8ce742c63a734a
|
||||
F test/interrupt.test 9142ce4448605127640eda5e283952f75f67ed91
|
||||
F test/interrupt.test 6b6b8b86cdeb66d5488bd1db74b4bb3c46e4f565
|
||||
F test/intpkey.test 3956a34cc82374821a017cf1646c9ff32f5e3c81
|
||||
F test/ioerr.test 3ce897ee998ee874073f3b23b0396d9ff804759c
|
||||
F test/join.test 9ef6aabaac9de51d5fc41e68d1f4355da05a84cd
|
||||
@ -174,7 +174,7 @@ F test/table.test fd9a0f4992230e4ca89cd37ae3191a12750df1d0
|
||||
F test/tableapi.test b21ab097e87a5484bb61029e69e1a4e5c5e65ede
|
||||
F test/tclsqlite.test 1288e6278e094c58ce650d7cbf3c4f39317d9a34
|
||||
F test/temptable.test 63a16e3ad19adf073cfbcdf7624c92ac5236522c
|
||||
F test/tester.tcl 1ff1170dd4203d87f572871080cdb64330dade99
|
||||
F test/tester.tcl 6dd72b79878a1b7076156cd1f0e674415dd91bc6
|
||||
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
|
||||
F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
|
||||
F test/threadtest2.c 97a830d53c24c42290501fdfba4a6e5bdd34748b
|
||||
@ -190,7 +190,7 @@ F test/types2.test f23c147a2ab3e51d5dbcfa9987200db5acba7aa7
|
||||
F test/unique.test 0e38d4cc7affeef2527720d1dafd1f6870f02f2b
|
||||
F test/update.test b29bd9061a1150426dab6959806fcc73a41b1217
|
||||
F test/utf16.test 459c2f5ab80c60092c603630a348c32d6e59c558
|
||||
F test/vacuum.test 6bce0f84fff255b943abed3b345c9e0ce287e2b6
|
||||
F test/vacuum.test 05959d8e6caf26d4d06cae19df49c41a4991676d
|
||||
F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
|
||||
F test/view.test ca5c296989d3045f121be9a67588ff88c64874a8
|
||||
F test/where.test 40dcffcb77ad0a00960cef2b5b1212c77fd02199
|
||||
@ -251,7 +251,7 @@ F www/tclsqlite.tcl 560ecd6a916b320e59f2917317398f3d59b7cc25
|
||||
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
|
||||
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
|
||||
F www/whentouse.tcl fdacb0ba2d39831e8a6240d05a490026ad4c4e4c
|
||||
P 09de96b6b2e877282be0815ba76c10f18839ff6b
|
||||
R c872ef25d669a1ccc74408d414b2bed5
|
||||
P 87a3c668f0dcd43f5d9b38d92a75a4ac38d49057
|
||||
R 7ce19f5cec69820ac47d8f047cf87ee1
|
||||
U drh
|
||||
Z 3519d7ca392cdf8d6ad112e35ee57148
|
||||
Z 49adbf5abf742ee3280084694fca0270
|
||||
|
@ -1 +1 @@
|
||||
87a3c668f0dcd43f5d9b38d92a75a4ac38d49057
|
||||
2aa506ccb003a25555b414772002d0130db93052
|
67
src/test1.c
67
src/test1.c
@ -13,7 +13,7 @@
|
||||
** is not included in the SQLite library. It is used for automated
|
||||
** testing of the SQLite library.
|
||||
**
|
||||
** $Id: test1.c,v 1.104 2004/09/30 13:43:13 drh Exp $
|
||||
** $Id: test1.c,v 1.105 2004/10/30 20:23:09 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include "tcl.h"
|
||||
@ -2467,6 +2467,69 @@ static int tcl_variable_type(
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** This routine sets entries in the global ::sqlite_options() array variable
|
||||
** according to the compile-time configuration of the database. Test
|
||||
** procedures use this to determine when tests should be omitted.
|
||||
*/
|
||||
static void set_options(Tcl_Interp *interp){
|
||||
#ifdef SQLITE_OMIT_AUTHORIZATION
|
||||
Tcl_SetVar2(interp, "sqlite_options", "auth", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "auth", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_VACUUM
|
||||
Tcl_SetVar2(interp, "sqlite_options", "vacuum", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "vacuum", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_PROGRESS_CALLBACK
|
||||
Tcl_SetVar2(interp, "sqlite_options", "progress", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_DATETIME_FUNCS
|
||||
Tcl_SetVar2(interp, "sqlite_options", "datetime", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "datatime", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#if defined(THREADSAFE) && THREADSAFE
|
||||
Tcl_SetVar2(interp, "sqlite_options", "threadsafe", "1", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "threadsafe", "0", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_COMPOUND_SELECT
|
||||
Tcl_SetVar2(interp, "sqlite_options", "compound", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "compound", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_TRIGGER
|
||||
Tcl_SetVar2(interp, "sqlite_options", "trigger", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "trigger", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_VIEW
|
||||
Tcl_SetVar2(interp, "sqlite_options", "view", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "view", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_INTEGRITY_CHECK
|
||||
Tcl_SetVar2(interp, "sqlite_options", "integrityck", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "integrityck", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_FOREIGN_KEY
|
||||
Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "foreignkey", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
#ifdef SQLITE_OMIT_CONFLICT_CLAUSE
|
||||
Tcl_SetVar2(interp, "sqlite_options", "conflict", "0", TCL_GLOBAL_ONLY);
|
||||
#else
|
||||
Tcl_SetVar2(interp, "sqlite_options", "conflict", "1", TCL_GLOBAL_ONLY);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
** Register commands with the TCL interpreter.
|
||||
*/
|
||||
@ -2563,7 +2626,6 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
|
||||
{ "sqlite3_crashparams", sqlite3_crashparams, 0 },
|
||||
{ "sqlite3_test_errstr", test_errstr, 0 },
|
||||
{ "tcl_variable_type", tcl_variable_type, 0 },
|
||||
|
||||
};
|
||||
int i;
|
||||
extern int sqlite3_os_trace;
|
||||
@ -2589,5 +2651,6 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
|
||||
(char*)&sqlite_static_bind_value, TCL_LINK_STRING);
|
||||
Tcl_LinkVar(interp, "sqlite_temp_directory",
|
||||
(char*)&sqlite3_temp_directory, TCL_LINK_STRING);
|
||||
set_options(interp);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
@ -14,12 +14,12 @@
|
||||
** Most of the code in this file may be omitted by defining the
|
||||
** SQLITE_OMIT_VACUUM macro.
|
||||
**
|
||||
** $Id: vacuum.c,v 1.32 2004/09/17 20:02:42 drh Exp $
|
||||
** $Id: vacuum.c,v 1.33 2004/10/30 20:23:09 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include "os.h"
|
||||
|
||||
#if !defined(SQLITE_OMIT_VACUUM) || SQLITE_OMIT_VACUUM
|
||||
#ifndef SQLITE_OMIT_VACUUM
|
||||
/*
|
||||
** Generate a random name of 20 character in length.
|
||||
*/
|
||||
@ -93,7 +93,7 @@ void sqlite3Vacuum(Parse *pParse, Token *pTableName){
|
||||
*/
|
||||
int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
|
||||
int rc = SQLITE_OK; /* Return code from service routines */
|
||||
#if !defined(SQLITE_OMIT_VACUUM) || SQLITE_OMIT_VACUUM
|
||||
#ifndef SQLITE_OMIT_VACUUM
|
||||
const char *zFilename; /* full pathname of the database file */
|
||||
int nFilename; /* number of characters in zFilename[] */
|
||||
char *zTemp = 0; /* a temporary file in same directory as zFilename */
|
||||
|
@ -12,7 +12,7 @@
|
||||
# focus of this script testing the ability of SQLite to handle database
|
||||
# files larger than 4GB.
|
||||
#
|
||||
# $Id: bigfile.test,v 1.6 2004/06/30 11:28:13 drh Exp $
|
||||
# $Id: bigfile.test,v 1.7 2004/10/30 20:23:09 drh Exp $
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
@ -71,7 +71,6 @@ do_test bigfile-1.2 {
|
||||
}
|
||||
} $::MAGIC_SUM
|
||||
|
||||
|
||||
# The previous test may fail on some systems because they are unable
|
||||
# to handle large files. If that is so, then skip all of the following
|
||||
# tests. We will know the above test failed because the "db" command
|
||||
|
@ -11,11 +11,19 @@
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this file is testing date and time functions.
|
||||
#
|
||||
# $Id: date.test,v 1.9 2004/08/20 18:34:20 drh Exp $
|
||||
# $Id: date.test,v 1.10 2004/10/30 20:23:10 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
||||
# Skip this whole file if date and time functions are omitted
|
||||
# at compile-time
|
||||
#
|
||||
if {!$sqlite_options(datetime)} {
|
||||
finish_test
|
||||
return
|
||||
}
|
||||
|
||||
proc datetest {tnum expr result} {
|
||||
do_test date-$tnum [subst {
|
||||
execsql "SELECT coalesce($expr,'NULL')"
|
||||
|
@ -11,7 +11,7 @@
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this script is the sqlite_interrupt() API.
|
||||
#
|
||||
# $Id: interrupt.test,v 1.4 2004/02/18 16:57:23 drh Exp $
|
||||
# $Id: interrupt.test,v 1.5 2004/10/30 20:23:10 drh Exp $
|
||||
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
@ -100,9 +100,11 @@ do_test interrupt-2.3 {
|
||||
SELECT md5sum(a || b) FROM t1;
|
||||
}
|
||||
} $cksum
|
||||
do_test interrupt-2.4 {
|
||||
ifcapable vacuum {
|
||||
do_test interrupt-2.4 {
|
||||
expr {$::origsize>[file size test.db]}
|
||||
} 1
|
||||
} 1
|
||||
}
|
||||
integrity_check interrupt-2.5
|
||||
|
||||
# Ticket #594. If an interrupt occurs in the middle of a transaction
|
||||
|
@ -11,7 +11,7 @@
|
||||
# This file implements some common TCL routines used for regression
|
||||
# testing the SQLite library
|
||||
#
|
||||
# $Id: tester.tcl,v 1.38 2004/08/20 18:34:20 drh Exp $
|
||||
# $Id: tester.tcl,v 1.39 2004/10/30 20:23:10 drh Exp $
|
||||
|
||||
# Make sure tclsqlite3 was compiled correctly. Abort now with an
|
||||
# error message if not.
|
||||
@ -230,7 +230,17 @@ proc forcedelete {filename} {
|
||||
# Do an integrity check of the entire database
|
||||
#
|
||||
proc integrity_check {name} {
|
||||
ifcapable integrityck {
|
||||
do_test $name {
|
||||
execsql {PRAGMA integrity_check}
|
||||
} {ok}
|
||||
}
|
||||
}
|
||||
|
||||
# Evaluate a boolean expression of capabilities. If true, execute the
|
||||
# code. Omit the code if false.
|
||||
#
|
||||
proc ifcapable {expr code} {
|
||||
regsub -all {[a-z]+} $expr {$::sqlite_options(&)} e2
|
||||
if $e2 {uplevel 1 $code}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this file is testing the VACUUM statement.
|
||||
#
|
||||
# $Id: vacuum.test,v 1.25 2004/09/02 15:27:42 drh Exp $
|
||||
# $Id: vacuum.test,v 1.26 2004/10/30 20:23:10 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -67,9 +67,11 @@ do_test vacuum-1.2 {
|
||||
}
|
||||
cksum
|
||||
} $cksum
|
||||
do_test vacuum-1.3 {
|
||||
ifcapable vacuum {
|
||||
do_test vacuum-1.3 {
|
||||
expr {[file size test.db]<$::size1}
|
||||
} {1}
|
||||
} {1}
|
||||
}
|
||||
do_test vacuum-1.4 {
|
||||
execsql {
|
||||
BEGIN;
|
||||
@ -92,18 +94,21 @@ do_test vacuum-1.5 {
|
||||
}
|
||||
cksum
|
||||
} $cksum
|
||||
do_test vacuum-1.6 {
|
||||
ifcapable vacuum {
|
||||
do_test vacuum-1.6 {
|
||||
expr {[file size test.db]<$::size1}
|
||||
} {1}
|
||||
|
||||
do_test vacuum-2.1 {
|
||||
} {1}
|
||||
}
|
||||
ifcapable vacuum {
|
||||
do_test vacuum-2.1 {
|
||||
catchsql {
|
||||
BEGIN;
|
||||
VACUUM;
|
||||
COMMIT;
|
||||
}
|
||||
} {1 {cannot VACUUM from within a transaction}}
|
||||
catch {db eval COMMIT}
|
||||
} {1 {cannot VACUUM from within a transaction}}
|
||||
catch {db eval COMMIT}
|
||||
}
|
||||
do_test vacuum-2.2 {
|
||||
sqlite3 db2 test.db
|
||||
execsql {
|
||||
|
Reference in New Issue
Block a user