diff --git a/Makefile.in b/Makefile.in index 071172c231..8c3f9a41f3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -230,11 +230,7 @@ fulltest: testfixture sqlite test: testfixture sqlite ./testfixture $(TOP)/test/quick.test -sqlite.tar.gz: - pwd=`pwd`; cd $(TOP)/..; tar czf $$pwd/sqlite.tar.gz sqlite - -index.html: $(TOP)/www/index.tcl sqlite.tar.gz last_change - cp ../sqlite-*.tar.gz . +index.html: $(TOP)/www/index.tcl last_change tclsh $(TOP)/www/index.tcl `cat $(TOP)/VERSION` >index.html sqlite.html: $(TOP)/www/sqlite.tcl @@ -273,11 +269,13 @@ tclsqlite.html: $(TOP)/www/tclsqlite.tcl speed.html: $(TOP)/www/speed.tcl tclsh $(TOP)/www/speed.tcl >speed.html +download.html: $(TOP)/www/download.tcl + tclsh $(TOP)/www/download.tcl >download.html + # Files to be published on the website. # -PUBLISH = \ - sqlite.tar.gz \ +DOC = \ index.html \ sqlite.html \ changes.html \ @@ -290,13 +288,12 @@ PUBLISH = \ crosscompile.html \ mingw.html \ tclsqlite.html \ + download.html \ speed.html -website: $(PUBLISH) - -publish: $(PUBLISH) - chmod 0644 $(PUBLISH) sqlite-*.tar.gz - scp $(PUBLISH) sqlite-*.tar.gz hwaci@oak.he.net:public_html/sw/sqlite +doc: $(DOC) + mkdir -p doc + mv $(DOC) doc install: sqlite libsqlite.la sqlite.h $(LIBTOOL) $(INSTALL) libsqlite.la $(prefix)/lib @@ -306,7 +303,7 @@ install: sqlite libsqlite.la sqlite.h clean: rm -f *.lo *.la *.o sqlite libsqlite.la sqlite.h rm -rf .libs .deps - rm -f lemon lempar.c parse.* sqlite.tar.gz + rm -f lemon lempar.c parse.* sqlite*.tar.gz rm -f $(PUBLISH) rm -f *.da *.bb *.bbg gmon.out rm -f testfixture test.db diff --git a/Makefile.template b/Makefile.template index 23db62d351..f76e22c786 100644 --- a/Makefile.template +++ b/Makefile.template @@ -284,11 +284,7 @@ fulltest: testfixture$(EXE) sqlite$(EXE) test: testfixture$(EXE) sqlite$(EXE) ./testfixture$(EXE) $(TOP)/test/quick.test -sqlite.tar.gz: - pwd=`pwd`; cd $(TOP)/..; tar czf $$pwd/sqlite.tar.gz sqlite - -index.html: $(TOP)/www/index.tcl sqlite.tar.gz last_change - cp ../sqlite-*.tar.gz . +index.html: $(TOP)/www/index.tcl last_change tclsh $(TOP)/www/index.tcl `cat $(TOP)/VERSION` >index.html sqlite.html: $(TOP)/www/sqlite.tcl @@ -327,11 +323,13 @@ tclsqlite.html: $(TOP)/www/tclsqlite.tcl speed.html: $(TOP)/www/speed.tcl tclsh $(TOP)/www/speed.tcl >speed.html +download.html: $(TOP)/www/download.tcl + tclsh $(TOP)/www/download.tcl >download.html + # Files to be published on the website. # -PUBLISH = \ - sqlite.tar.gz \ +DOC = \ index.html \ sqlite.html \ changes.html \ @@ -344,13 +342,12 @@ PUBLISH = \ crosscompile.html \ mingw.html \ tclsqlite.html \ + download.html \ speed.html -website: $(PUBLISH) - -publish: $(PUBLISH) - chmod 0644 $(PUBLISH) sqlite-*.tar.gz - scp $(PUBLISH) sqlite-*.tar.gz hwaci@oak.he.net:public_html/sw/sqlite +doc: $(DOC) + mkdir -p doc + mv $(DOC) doc install: sqlite libsqlite.a sqlite.h mv sqlite /usr/bin @@ -359,7 +356,7 @@ install: sqlite libsqlite.a sqlite.h clean: rm -f *.o sqlite libsqlite.a sqlite.h - rm -f lemon lempar.c parse.* sqlite.tar.gz + rm -f lemon lempar.c parse.* sqlite*.tar.gz rm -f $(PUBLISH) rm -f *.da *.bb *.bbg gmon.out rm -rf tsrc diff --git a/VERSION b/VERSION index 5cf092f4db..227cea2156 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0-alpha-3 +2.0.0 diff --git a/manifest b/manifest index 095bc520b1..51c841272f 100644 --- a/manifest +++ b/manifest @@ -1,9 +1,9 @@ -C Put\sin\sthe\snew\sLIBTOOL\sbuild\ssystem.\s(CVS\s271) -D 2001-09-28T01:34:44 -F Makefile.in 4d29e58224476426cc8c78b631ae478cbad0e1ea -F Makefile.template 31de3ce7126e8325c759a94e5b72ee8febc43357 +C Version\s2.0.0\s(CVS\s272) +D 2001-09-28T17:47:14 +F Makefile.in 98d4627cb364537e4c3a29ee806171f3abf5211a +F Makefile.template 7179523fdf3d6e7933ec843e2352dcfc9785c700 F README 93d2977cc5c6595c448de16bdefc312b9d401533 -F VERSION 17fadc361fb942d644f92116388409c937c9fa79 +F VERSION 3861a21803fcd9eb92a403027b0da2bb7add4de1 F aclocal.m4 11faa843caa38fd451bc6aeb43e248d1723a269d F config.guess f38b1e93d1e0fa6f5a6913e9e7b12774b9232588 F config.log 6a73d03433669b10a3f0c221198c3f26b9413914 @@ -17,6 +17,7 @@ F doc/report1.txt a031aaf37b185e4fa540223cb516d3bccec7eeac F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 F libtool c56e618713c9510a103bda6b95f3ea3900dcacd6 F ltmain.sh e9ed72eb1d690f447c13945eaf69e28af531eda1 +F publish.sh 88bc1f96946582eb0323c4d31a89767ba6ae46ce F src/TODO af7f3cab0228e34149cf98e073aa83d45878e7e6 F src/btree.c a4a88dfef2072cedfdac09f3a51b7d70b017b9b4 F src/btree.h 57d653ef5137b91f2a068aaf71a2905468dd2cb7 @@ -41,7 +42,7 @@ F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e F src/sqlite.h.in 08151912b382ded315b5c8fc6288d9d7a9332aa4 F src/sqliteInt.h 3ead85324704b79b2ae6799d6af3e5fd710756d9 F src/table.c abd0adbe0fee39d995287b3bcccd908d174dfcac -F src/tclsqlite.c 04a35d04f06046acc3944121dc6c36717f7f36d5 +F src/tclsqlite.c 765599686c19ed777ac379928d732c8bfc63ebac F src/test1.c e4b31f62ea71963cbae44338acf477a04fc8fc49 F src/test2.c 0168b39225b768cfdadd534406f9dec58c27879e F src/test3.c 4a0d7b882fdae731dbb759f512ad867122452f96 @@ -99,18 +100,18 @@ F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4 F www/arch.tcl c1891efdc00cd76eec72bdbf8b446195902932a3 F www/c_interface.tcl 52ae81c89bf906b358e04857bd3f76b1a7f61c1b -F www/changes.tcl d06af04f300162e47ac066e125ef34e863a19ca2 +F www/changes.tcl 47619693c843174b57d41482fcd00e2e70d41fd0 F www/crosscompile.tcl c99efacb3aefaa550c6e80d91b240f55eb9fd33e F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c -F www/index.tcl fd8ef2d78f22022d2baea03371a1add75d98d236 -F www/lang.tcl d093693db5d4d7b7127d134807e4e65dea0e5dee +F www/index.tcl 639a75165dc532a16ddb02055bc69541eecc3fa7 +F www/lang.tcl 33a74d727615ccbee8be7c8efd5876ce008c4b0e F www/mingw.tcl fc5f4ba9d336b6e8c97347cc6496d6162461ef60 F www/opcode.tcl 60222aeb57a7855b2582c374b8753cb5bb53c4ab F www/speed.tcl 91b53f9403a62bb322dc1f85a81531309bcfb41c F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f F www/tclsqlite.tcl 13d50723f583888fc80ae1a38247c0ab415066fa F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad -P 3ae952933997c6422ec53b26391ba362c6e5c44a -R 9eb0a8a330099ee573677e4648d1a9dc +P 00575d167aea567bc38f8a329aeff7b814eb91c8 +R 81c8ca6ec47dd72d51e7ef41271549d2 U drh -Z dd38c213d9c2c1db847a360dc3d08644 +Z 04def0ebf7eae2e65632e77981c5002a diff --git a/manifest.uuid b/manifest.uuid index 806240d856..c5be8b95fe 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -00575d167aea567bc38f8a329aeff7b814eb91c8 \ No newline at end of file +1df5386a5557c1fc6a5433e9dbd23009026be369 \ No newline at end of file diff --git a/publish.sh b/publish.sh new file mode 100644 index 0000000000..083a25d10c --- /dev/null +++ b/publish.sh @@ -0,0 +1,98 @@ +#!/bin/sh +# +# This script is used to compile SQLite and all its documentation and +# ship everything up to the SQLite website. This script will only work +# on the system "zadok" at the Hwaci offices. But others might find +# the script useful as an example. +# + +# Set srcdir to the name of the directory that contains the publish.sh +# script. +# +srcdir=`echo "$0" | sed 's%\(^.*\)/[^/][^/]*$%\1%'` + +# Get the makefile. +# +cp $srcdir/Makefile.template ./Makefile + +# Start building stuff. +# +make clean +make sqlite +strip sqlite +mv sqlite sqlite.bin +gzip sqlite.bin + +# Build the tclsqlite.so shared library for import into tclsh or wish +# under Linux +# +make target_source +cd tsrc +rm shell.c +TCLDIR=/home/drh/tcltk/8.2linux +OPTS='-DUSE_TCL_STUBS=1 -DNDEBUG=1 -DOS_UNIX=1 -DOS_WIN=0' +gcc -fPIC $OPTS -O2 -I. -I$TCLDIR -shared *.c -o tclsqlite.so +strip tclsqlite.so +mv tclsqlite.so .. +cd .. +gzip tclsqlite.so + +# Build the tclsqlite.dll shared library that can be imported into tclsh +# or wish on windows. +# +make target_source +cd tsrc +TCLDIR=/home/drh/tcltk/8.2win +TCLSTUBLIB=$TCLDIR/tclstub82.a +PATH=$PATH:/opt/mingw/bin +OPTS='-DUSE_TCL_STUBS=1 -DNDEBUG=1 -DOS_UNIX=0 -DOS_WIN=1' +CC="i386-mingw32-gcc -O2 $OPTS -I. -I$TCLDIR" +rm shell.c +for i in *.c; do + CMD="$CC -c $i" + echo $CMD + $CMD +done +echo 'EXPORTS' >tclsqlite.def +echo 'Tclsqlite_Init' >>tclsqlite.def +echo 'Sqlite_Init' >>tclsqlite.def +i386-mingw32-dllwrap \ + --def tclsqlite.def -v --export-all \ + --driver-name i386-mingw32-gcc \ + --dlltool-name i386-mingw32-dlltool \ + --as i386-mingw32-as \ + --target i386-mingw32 \ + -dllname tclsqlite.dll -lmsvcrt *.o $TCLSTUBLIB +i386-mingw32-strip tclsqlite.dll +mv tclsqlite.dll .. +cd .. +rm -f tclsqlite.zip +zip tclsqlite.zip tclsqlite.dll + +# Build the sqlite.exe executable for windows. +# +make target_source +cd tsrc +rm tclsqlite.c +OPTS='-DSTATIC_BUILD=1 -DNDEBUG=1 -DOS_UNIX=0 -DOS_WIN=1' +i386-mingw32-gcc -O2 $OPTS -I. -I$TCLDIR *.c -o sqlite.exe +mv sqlite.exe .. +cd .. +rm -f sqlite.zip +zip sqlite.zip sqlite.exe + +# Construct a tarball of the source tree +# +ORIGIN=`pwd` +cd $srcdir +cd .. +tar czf $ORIGIN/sqlite.tar.gz sqlite +cd $ORIGIN +vers=`cat $srcdir/VERSION` +ln sqlite.tar.gz sqlite-$vers.tar.gz + +# Build the website +# +cp $srcdir/../historical/* . +make doc +ln sqlite.bin.gz sqlite.zip sqlite*.tar.gz tclsqlite.so.gz tclsqlite.zip doc diff --git a/src/tclsqlite.c b/src/tclsqlite.c index 9537a451c7..bf713e8e4e 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -11,7 +11,7 @@ ************************************************************************* ** A TCL Interface to SQLite ** -** $Id: tclsqlite.c,v 1.23 2001/09/16 00:13:27 drh Exp $ +** $Id: tclsqlite.c,v 1.24 2001/09/28 17:47:14 drh Exp $ */ #ifndef NO_TCL /* Omit this whole file if TCL is unavailable */ @@ -433,6 +433,15 @@ static int DbMain(void *cd, Tcl_Interp *interp, int argc, char **argv){ return TCL_OK; } +/* +** Provide a dummy Tcl_InitStubs if we are using this as a static +** library. +*/ +#ifndef USE_TCL_STUBS +# undef Tcl_InitStubs +# define Tcl_InitStubs(a,b,c) +#endif + /* ** Initialize this module. ** @@ -443,6 +452,13 @@ static int DbMain(void *cd, Tcl_Interp *interp, int argc, char **argv){ ** for additional information. */ int Sqlite_Init(Tcl_Interp *interp){ + Tcl_InitStubs(interp, "8.0", 0); + Tcl_CreateCommand(interp, "sqlite", DbMain, 0, 0); + Tcl_PkgProvide(interp, "sqlite", "1.0"); + return TCL_OK; +} +int Tclsqlite_Init(Tcl_Interp *interp){ + Tcl_InitStubs(interp, "8.0", 0); Tcl_CreateCommand(interp, "sqlite", DbMain, 0, 0); Tcl_PkgProvide(interp, "sqlite", "1.0"); return TCL_OK; @@ -450,6 +466,9 @@ int Sqlite_Init(Tcl_Interp *interp){ int Sqlite_SafeInit(Tcl_Interp *interp){ return TCL_OK; } +int Tclsqlite_SafeInit(Tcl_Interp *interp){ + return TCL_OK; +} #if 0 /* diff --git a/www/changes.tcl b/www/changes.tcl index 84f42239c1..4eb9609708 100644 --- a/www/changes.tcl +++ b/www/changes.tcl @@ -17,6 +17,15 @@ proc chng {date desc} { puts "
SQLite is not a client library used to connect to a big database server. SQLite is the server. The SQLite library reads and writes directly to and from the database files -on disk.
+on disk.} -
+
|
-
|
You can download a tarball containing all source -code for SQLite +
+Precompiled binaries for Linux and Windows and the complete +source tree are available for download. +
} -puts "version $vers" -puts { -(including the TCL scripts that generate the -HTML files for this website) at sqlite.tar.gz.} -puts "This is a [file size sqlite.tar.gz] byte download." -set historical [lsort -dict [glob -nocomplain sqlite-*.tar.gz]] -if {$historical!=""} { - puts {The following historical versions of SQLite are also available:} - foreach x $historical { - puts "$x ([file size $x] bytes)" - } -} -puts {} puts {Known bugs:
- -- The LIKE operator is suppose to ignore case. - But it only ignores case for 7-bit Latin characters. - The case of 8-bit iso8859 characters or UTF-8 characters is - signification. Hence, 'a' LIKE 'A' returns - TRUE but 'æ' LIKE 'Æ' returns FALSE. -
The Win2K version of SQLite was built using the MingW32 cross-compiler -running under Linux. You have to give the configure script hints to make -this work. Read the comments at the beginning of the file -configure.in for additional information. The source code is -general enough that it should be possible to compile SQLite using VC++, -though the author has no desire or motivation to try. -
} puts {Beginning in version 2.0, SQLite supports transactions with rollback and atomic commit. However, only a single level of -transaction is required. In other words, transactions +transaction is allowed. In other words, transactions may not be nested.
@@ -173,7 +173,7 @@ puts "\"[Operator \\.]\"." Section {CREATE INDEX} createindex Syntax {sql-statement} { -CREATE INDEXThere are no arbitrary limits on the number of indices that can be attached to a single table, nor on the number of columns in an index.
+If the UNIQUE keyword appears between CREATE and INDEX then duplicate +index entries are not allowed. Any attempt to insert a duplicate entry +will result in a rollback and an error message.
+The exact text of each CREATE INDEX statement is stored in the sqlite_master table. Everytime the database is opened, all CREATE INDEX statements @@ -234,10 +238,12 @@ is the name of the table that records the database schema.
Each column definition is the name of the column followed by the datatype for that column, then one or more optional column constraints. The datatype for the column is ignored. All information -is stored as null-terminated strings. The constraints are also ignored, -except that the PRIMARY KEY constraint will cause an index to be automatically -created that implements the primary key and the DEFAULT constraint -which specifies a default value to use when doing an INSERT. +is stored as null-terminated strings. +The UNIQUE constraint causes an index to be created on the specified +columns. This index must contain unique keys. The PRIMARY KEY constraint +is an alias for UNIQUE. +The DEFAULT constraint +specifies a default value to use when doing an INSERT.
There are no arbitrary limits on the number