Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add ability to quote table and column names in expression. (CVS 235) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
029e3a3a5dd8d4923af50bb2c9f31b1b |
User & Date: | drh 2001-07-23 14:33:03.000 |
Context
2001-07-23
| ||
14:33 | Add ability to quote table and column names in expression. (CVS 1721) (check-in: 770e983628 user: drh tags: trunk) | |
14:33 | Add ability to quote table and column names in expression. (CVS 235) (check-in: 029e3a3a5d user: drh tags: trunk) | |
2001-07-02
| ||
17:51 | BTree and pager are working pretty well now. (CVS 234) (check-in: a84fb078ba user: drh tags: trunk) | |
Changes
Changes to Makefile.in.
︙ | ︙ | |||
43 44 45 46 47 48 49 | # The library that programs using readline() must link against. # LIBREADLINE = @TARGET_READLINE_LIBS@ # Object files for the SQLite library. # | | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | # The library that programs using readline() must link against. # LIBREADLINE = @TARGET_READLINE_LIBS@ # Object files for the SQLite library. # LIBOBJ = build.o dbbe.o dbbegdbm.o dbbemem.o delete.o expr.o insert.o \ main.o parse.o printf.o random.o select.o table.o \ tokenize.o update.o util.o vdbe.o where.o tclsqlite.o # All of the source code files. # SRC = \ $(TOP)/src/build.c \ $(TOP)/src/dbbe.c \ |
︙ | ︙ | |||
79 80 81 82 83 84 85 | $(TOP)/src/vdbe.h \ $(TOP)/src/where.c # Source code to the test files. # TESTSRC = \ $(TOP)/src/test1.c \ | < < | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | $(TOP)/src/vdbe.h \ $(TOP)/src/where.c # Source code to the test files. # TESTSRC = \ $(TOP)/src/test1.c \ $(TOP)/src/md5.c # This is the default Makefile target. The objects listed here # are what get build when you type just "make" with no arguments. # all: sqlite.h libsqlite.a sqlite |
︙ | ︙ | |||
114 115 116 117 118 119 120 | cp $(TOP)/tool/lempar.c . # Header files used by all library source files. # HDR = \ sqlite.h \ $(TOP)/src/sqliteInt.h \ | < < < < < | 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | cp $(TOP)/tool/lempar.c . # Header files used by all library source files. # HDR = \ sqlite.h \ $(TOP)/src/sqliteInt.h \ $(TOP)/src/dbbe.h \ $(TOP)/src/vdbe.h \ parse.h build.o: $(TOP)/src/build.c $(HDR) $(TCC) $(GDBM_FLAGS) -c $(TOP)/src/build.c dbbe.o: $(TOP)/src/dbbe.c $(HDR) $(TCC) $(GDBM_FLAGS) -c $(TOP)/src/dbbe.c dbbegdbm.o: $(TOP)/src/dbbegdbm.c $(HDR) |
︙ | ︙ | |||
191 192 193 194 195 196 197 | tclsqlite.o: $(TOP)/src/tclsqlite.c $(HDR) $(TCC) $(GDBM_FLAGS) $(TCL_FLAGS) -c $(TOP)/src/tclsqlite.c printf.o: $(TOP)/src/printf.c $(HDR) $(TCC) $(GDBM_FLAGS) $(TCL_FLAGS) -c $(TOP)/src/printf.c | < < < | | | 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | tclsqlite.o: $(TOP)/src/tclsqlite.c $(HDR) $(TCC) $(GDBM_FLAGS) $(TCL_FLAGS) -c $(TOP)/src/tclsqlite.c printf.o: $(TOP)/src/printf.c $(HDR) $(TCC) $(GDBM_FLAGS) $(TCL_FLAGS) -c $(TOP)/src/printf.c gdbmdump: $(TOP)/tool/gdbmdump.c $(TCC) $(GDBM_FLAGS) -o gdbmdump $(TOP)/tool/gdbmdump.c $(LIBGDBM) tclsqlite: $(TOP)/src/tclsqlite.c libsqlite.a $(TCC) $(TCL_FLAGS) -DTCLSH=1 -o tclsqlite \ $(TOP)/src/tclsqlite.c libsqlite.a $(LIBGDBM) $(LIBTCL) testfixture: $(TOP)/src/tclsqlite.c libsqlite.a $(TESTSRC) $(TCC) $(TCL_FLAGS) -DTCLSH=1 -DSQLITE_TEST=1 -o testfixture \ $(TESTSRC) $(TOP)/src/tclsqlite.c \ libsqlite.a $(LIBGDBM) $(LIBTCL) test: testfixture sqlite ./testfixture $(TOP)/test/all.test sqlite.tar.gz: pwd=`pwd`; cd $(TOP)/..; tar czf $$pwd/sqlite.tar.gz sqlite |
︙ | ︙ |
Changes to VERSION.
|
| | | 1 | 1.0.32 |
Added notes/notes2b.txt.
> > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | add_to_page(cursor, payload, child){ if( fits-on-current-page ){ insert (child,payload) into cursor return } if( cursor is root page ){ split cursor+(child,payload) into page1, center, page2 set cursor page to page1,center,page2 return } if( move_some_data_left || move_some_data_right ){ add (child,payload) to cursor return } split cursor+(child,payload) into self, center, page2 move_up(cursor) add_to_page(cursor, center, page2) } split(in_page, payload, child_pgno, out_page1, center_payload, out_page2){ // It might be that in_page==out_page1 } |
Changes to notes/notes3.txt.
1 2 3 | The Proposed New SQLite 2.0 Interface design. (April 16, 2001) Primary access routines: | | | | | > | > | > > > > > > > > | < < | | | | | | | | | < | > > > > < > > > > > > > > | > | | > > | | > > > | > > | > > > > > > > > > > | > > > > > | | | > > > > > | | < > > | | < > > | > | > > > | > | < | < < < > > > | > | | > > > > | > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | The Proposed New SQLite 2.0 Interface design. (April 16, 2001) Primary access routines: Control functions: sqlite *sqlite_open(const char *zFilename); int sqlite_compile(sqlite*, const char *zSql); int sqlite_next(sqlite*); int sqlite_abort(sqlite*); int sqlite_finish(sqlite*); sqlite *sqlite_dup(sqlite*); int sqlite_close(sqlite*); Access functions: int sqlite_status(sqlite*); char *sqlite_error_text(sqlite*); int sqlite_column_count(sqlite*); char **sqlite_column_names(sqlite*); char **sqlite_values(sqlite*); const char sqlite_version[]; const char sqlite_encoding[]; Secondary access routines: Control functions: int sqlite_complete(const char *); char *sqlite_mprintf(const char *zFormat, ...) char *sqlite_vmprintf(const char *zFormat, va_list ap); int sqlite_compile_printf(sqlite*, const char *zFormat, ...); int sqlite_compile_vprintf(sqlite*, const char *zFormat, va_list ap); int sqlite_eval(sqlite*, const char *zSql); int sqlite_retry(sqlite*); int sqlite_eval_printf(sqlite*, const char *zFormat, ...); int sqlite_eval_vprintf(sqlite*, const char *zFormat, va_list ap); int sqlite_busy_handler(sqlite*, int(*)(void*,const char*,int), void*); int sqlite_busy_timeout(sqlite*, int ms); Access functions: int sqlite_row_count(sqlite*); char ***sqlite_rows(sqlite*, int iRow); Usage examples: Getting an entire result table in one go: sqlite *p = sqlite_open("ex.db"); sqlite_eval(p, "SELECT * FROM table_one"); for(i=0; i<sqlite_row_count(p); i++){ if( i>0 ) printf("\n"); for(j=0; j<sqlite_column_count(p); j++){ printf("%s = %s\n", sqlite_column_names(p)[j], sqlite_row(p,i)[j]); } } sqlite_close(p); Getting one row at a time: sqlite *p = sqlite_open("ex.db"); sqlite_compile(p, "SELECT * FROM table_one"); for(i=0; sqlite_next(p)==SQLITE_OK; i++ ){ if( i>0 ) printf("\n"); for(j=0; j<sqlite_column_count(p); j++){ printf("%s = %s\n", sqlite_column_names(p)[j], sqlite_values(p)[j]; } } sqlite_close(p); Getting an entire result table with error and lock detection: sqlite *p = sqlite_open("ex.db"); if( p==0 ){ fprintf(stderr,"out of memory"); return; } if( sqlite_status(p)!=SQLITE_OK ){ fprintf(stderr,"Error opening database: %s", sqlite_error_text(p)); sqlite_close(p); return; } sqlite_busy_timeout(p, 5000); sqlite_eval(p, "SELECT * FROM table_one"); if( sqlite_status(p)!=SQLITE_OK ){ fprintf(stderr,"Query error: %s\n", sqlite_error_text(p)); sqlite_close(p); return; } for(i=0; i<sqlite_row_count(p); i++){ if( i>0 ) printf("\n"); for(j=0; j<sqlite_column_count(p); j++){ printf("%s = %s\n", sqlite_column_names(p)[j], sqlite_row(p,i)[j]); } } sqlite_close(p); Getting one row at a time with manual control of lock conflicts: sqlite *p = sqlite_open("ex.db"); if( p==0 ){ fprintf(stderr,"out of memory"); return; } if( sqlite_status(p)!=SQLITE_OK ){ fprintf(stderr,"Error opening database: %s", sqlite_error_text(p)); sqlite_close(p); return; } sqlite_compile(p, "SELECT * FROM table_one"); if( sqlite_status(p)!=SQLITE_OK ){ fprintf(stderr,"Query error: %s\n", sqlite_error_text(p)); sqlite_close(p); return; } for(i=0; sqlite_status(p)==SQLITE_OK; i++ ){ for(j=0; j<50 && sqlite_next(p)==SQLITE_BUSY; j++){ usleep(100000); } if( sqlite_status(p)!=SQLITE_OK ) break; if( i>0 ) printf("\n"); for(j=0; j<sqlite_column_count(p); j++){ printf("%s = %s\n", sqlite_column_names(p)[j], sqlite_values(p)[j]; } } sqlite_close(p); TCL Interface sqlite DB FILENAME ?MODE? DB compile SQL DB next DB status DB errortext DB row VAR DB argc DB argv ?N? DB table ?VAR? DB columns ?N? DB finish DB abort |
︙ | ︙ |
Changes to src/expr.c.
︙ | ︙ | |||
20 21 22 23 24 25 26 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions. ** | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions. ** ** $Id: expr.c,v 1.25 2001/07/23 14:33:04 drh Exp $ */ #include "sqliteInt.h" /* ** Walk an expression tree. Return 1 if the expression is constant ** and 0 if it involves variables. */ |
︙ | ︙ | |||
179 180 181 182 183 184 185 186 187 188 189 190 191 192 | zLeft = sqliteStrNDup(pLeft->token.z, pLeft->token.n); zRight = sqliteStrNDup(pRight->token.z, pRight->token.n); if( zLeft==0 || zRight==0 ){ sqliteFree(zLeft); sqliteFree(zRight); return 1; } pExpr->iTable = -1; for(i=0; i<pTabList->nId; i++){ int j; char *zTab; Table *pTab = pTabList->a[i].pTab; if( pTab==0 ) continue; if( pTabList->a[i].zAlias ){ | > > | 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | zLeft = sqliteStrNDup(pLeft->token.z, pLeft->token.n); zRight = sqliteStrNDup(pRight->token.z, pRight->token.n); if( zLeft==0 || zRight==0 ){ sqliteFree(zLeft); sqliteFree(zRight); return 1; } sqliteDequote(zLeft); sqliteDequote(zRight); pExpr->iTable = -1; for(i=0; i<pTabList->nId; i++){ int j; char *zTab; Table *pTab = pTabList->a[i].pTab; if( pTab==0 ) continue; if( pTabList->a[i].zAlias ){ |
︙ | ︙ |
Changes to src/tclsqlite.c.
︙ | ︙ | |||
19 20 21 22 23 24 25 | ** Author contact information: ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** A TCL Interface to SQLite ** | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ** Author contact information: ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** A TCL Interface to SQLite ** ** $Id: tclsqlite.c,v 1.21 2001/07/23 14:33:04 drh Exp $ */ #ifndef NO_TCL /* Omit this whole file if TCL is unavailable */ #include "sqlite.h" #include "tcl.h" #include <stdlib.h> #include <string.h> |
︙ | ︙ | |||
506 507 508 509 510 511 512 | Tcl_Interp *interp; Tcl_FindExecutable(argv[0]); interp = Tcl_CreateInterp(); Sqlite_Init(interp); #ifdef SQLITE_TEST { extern int Sqlitetest1_Init(Tcl_Interp*); | < < < < | 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 | Tcl_Interp *interp; Tcl_FindExecutable(argv[0]); interp = Tcl_CreateInterp(); Sqlite_Init(interp); #ifdef SQLITE_TEST { extern int Sqlitetest1_Init(Tcl_Interp*); extern int Md5_Init(Tcl_Interp*); Sqlitetest1_Init(interp); Md5_Init(interp); } #endif if( argc>=2 ){ int i; Tcl_SetVar(interp,"argv0",argv[1],TCL_GLOBAL_ONLY); Tcl_SetVar(interp,"argv", "", TCL_GLOBAL_ONLY); |
︙ | ︙ |
Deleted src/test2.c.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted src/test3.c.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted test/btree.test.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted test/btree2.test.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted test/pager.test.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Added test/quote.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | # Copyright (c) 2001 D. Richard Hipp # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # Author contact information: # drh@hwaci.com # http://www.hwaci.com/drh/ # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is the ability to specify table and column names # as quoted strings. # # $Id: quote.test,v 1.1 2001/07/23 14:33:04 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a table with a strange name and with strange column names. # do_test quote-1.0 { set r [catch { execsql {CREATE TABLE '@abc' ( '#xyz' int, '!pqr' text );} } msg] lappend r $msg } {0 {}} # Insert, update and query the table. # do_test quote-1.1 { set r [catch { execsql {INSERT INTO '@abc' VALUES(5,'hello')} } msg] lappend r $msg } {0 {}} do_test quote-1.2 { set r [catch { execsql {SELECT * FROM '@abc'} } msg ] lappend r $msg } {0 {5 hello}} do_test quote-1.3 { set r [catch { execsql {SELECT '@abc'.'!pqr', '@abc'.'#xyz'+5 FROM '@abc'} } msg ] lappend r $msg } {0 {hello 10}} do_test quote-1.4 { set r [catch { execsql {UPDATE '@abc' SET '#xyz'=11} } msg ] lappend r $msg } {0 {}} do_test quote-1.5 { set r [catch { execsql {SELECT '@abc'.'!pqr', '@abc'.'#xyz'+5 FROM '@abc'} } msg ] lappend r $msg } {0 {hello 16}} # Drop the table with the strange name. # do_test quote-1.6 { set r [catch { execsql {DROP TABLE '@abc'} } msg ] lappend r $msg } {0 {}} finish_test |
Changes to www/changes.tcl.
︙ | ︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2001 Apr 14 (1.0.31)} { <li>Pager subsystem added but not yet used.</li> <li>More robust handling of out-of-memory errors.</li> <li>New tests added to the test suite.</li> } | > > > > > > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2001 Jul 23 (1.0.32)} { <li>Pager and btree subsystems removed. These will be used in a follow-on SQL server library named "SQLus".</li> <li>Add the ability to use quoted strings as table and column names in expressions.</li> } chng {2001 Apr 14 (1.0.31)} { <li>Pager subsystem added but not yet used.</li> <li>More robust handling of out-of-memory errors.</li> <li>New tests added to the test suite.</li> } |
︙ | ︙ |