Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | :-) (CVS 70) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d3baa046c946a2c4d5567ee57d96a6c8 |
User & Date: | drh 2000-06-07 15:11:27.000 |
Context
2000-06-07
| ||
15:23 | :-) (CVS 71) (check-in: a92eb77170 user: drh tags: trunk) | |
15:11 | :-) (CVS 70) (check-in: d3baa046c9 user: drh tags: trunk) | |
14:42 | :-) (CVS 69) (check-in: e4f6b17f66 user: drh tags: trunk) | |
Changes
Changes to src/insert.c.
︙ | ︙ | |||
20 21 22 23 24 25 26 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This file contains C code routines that are called by the parser ** to handle INSERT statements. ** | | | 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 C code routines that are called by the parser ** to handle INSERT statements. ** ** $Id: insert.c,v 1.8 2000/06/07 15:11:27 drh Exp $ */ #include "sqliteInt.h" /* ** This routine is call to handle SQL of the following form: ** ** insert into TABLE (IDLIST) values(EXPRLIST) |
︙ | ︙ | |||
180 181 182 183 184 185 186 | char *zDflt = pTab->aCol[idx].zDflt; if( zDflt==0 ){ sqliteVdbeAddOp(v, OP_Null, 0, 0, 0, 0); }else{ sqliteVdbeAddOp(v, OP_String, 0, 0, zDflt, 0); } }else if( srcTab>=0 ){ | | | 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | char *zDflt = pTab->aCol[idx].zDflt; if( zDflt==0 ){ sqliteVdbeAddOp(v, OP_Null, 0, 0, 0, 0); }else{ sqliteVdbeAddOp(v, OP_String, 0, 0, zDflt, 0); } }else if( srcTab>=0 ){ sqliteVdbeAddOp(v, OP_Field, srcTab, idx, 0, 0); }else{ sqliteExprCode(pParse, pList->a[j].pExpr); } } sqliteVdbeAddOp(v, OP_MakeKey, pIdx->nField, 0, 0, 0); sqliteVdbeAddOp(v, OP_PutIdx, idx+base, 0, 0, 0); /* sqliteVdbeAddOp(v, OP_Close, idx, 0, 0, 0); */ |
︙ | ︙ |
Changes to src/main.c.
︙ | ︙ | |||
22 23 24 25 26 27 28 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** ** $Id: main.c,v 1.11 2000/06/07 15:11:27 drh Exp $ */ #include "sqliteInt.h" /* ** This is the callback routine for the code that initializes the ** database. Each callback contains text of a CREATE TABLE or ** CREATE INDEX statement that must be parsed to yield the internal |
︙ | ︙ | |||
181 182 183 184 185 186 187 | /* Attempt to read the schema */ rc = sqliteInit(db, pzErrMsg); if( rc!=SQLITE_OK && rc!=SQLITE_BUSY ){ sqlite_close(db); return 0; }else{ | | | 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | /* Attempt to read the schema */ rc = sqliteInit(db, pzErrMsg); if( rc!=SQLITE_OK && rc!=SQLITE_BUSY ){ sqlite_close(db); return 0; }else{ free(*pzErrMsg); *pzErrMsg = 0; } return db; } /* ** Close an existing SQLite database |
︙ | ︙ |
Changes to test/insert2.test.
︙ | ︙ | |||
20 21 22 23 24 25 26 | # http://www.hwaci.com/drh/ # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the INSERT statement that takes is # result from a SELECT. # | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # http://www.hwaci.com/drh/ # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the INSERT statement that takes is # result from a SELECT. # # $Id: insert2.test,v 1.2 2000/06/07 15:11:27 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create some tables with data that we can select against # do_test insert2-1.0 { |
︙ | ︙ | |||
65 66 67 68 69 70 71 72 73 | CREATE TABLE t1(log int, cnt int); INSERT INTO t1 SELECT log, count(*) FROM d1 GROUP BY log INTERSECT SELECT n-1,log FROM d1; SELECT * FROM t1 ORDER BY log; } } {1 1 2 2} finish_test | > > > > > > > > > > > > | 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | CREATE TABLE t1(log int, cnt int); INSERT INTO t1 SELECT log, count(*) FROM d1 GROUP BY log INTERSECT SELECT n-1,log FROM d1; SELECT * FROM t1 ORDER BY log; } } {1 1 2 2} do_test insert2-1.4 { catch {execsql {DROP TABLE t1}} set r [execsql { CREATE TABLE t1(log int, cnt int); CREATE INDEX i1 ON t1(log); CREATE INDEX i2 ON t1(cnt); INSERT INTO t1 SELECT log, count() FROM d1 GROUP BY log; SELECT * FROM t1 ORDER BY log; }] lappend r [execsql {SELECT cnt FROM t1 WHERE log=3}] lappend r [execsql {SELECT log FROM t1 WHERE cnt=4 ORDER BY log}] } {0 1 1 1 2 2 3 4 4 8 5 4 4 {3 5}} finish_test |
Added test/main.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 | # Copyright (c) 1999, 2000 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 exercising the code in main.c. # # $Id: main.test,v 1.1 2000/06/07 15:11:27 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Tests of the sqlite_complete() function. # do_test main-1.1 { db complete {This is a test} } {0} do_test main-1.2 { db complete { } } {0} do_test main-1.3 { db complete { -- a comment ; } } {0} do_test main-1.4 { db complete { -- a comment ; ; } } {1} # Try to open a database with a corrupt master file. # do_test main-2.0 { catch {db close} file delete -force testdb file mkdir testdb set fd [open testdb/sqlite_master.tbl w] puts $fd hi! close $fd set v [catch {sqlite db testdb} msg] lappend v $msg } {0 {}} finish_test |
Changes to test/select1.test.
︙ | ︙ | |||
19 20 21 22 23 24 25 | # drh@hwaci.com # http://www.hwaci.com/drh/ # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the SELECT statement. # | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # drh@hwaci.com # http://www.hwaci.com/drh/ # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the SELECT statement. # # $Id: select1.test,v 1.5 2000/06/07 15:11:27 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Try to select on a non-existant table. # do_test select1-1.1 { |
︙ | ︙ | |||
277 278 279 280 281 282 283 | lappend v $msg } {0 {A.f1 11 test2.t1 abc A.f1 33 test2.t1 abc}} do_test select1-6.8 { set v [catch {execsql2 {SELECT A.f1, f1 FROM test1 as A, test1 as B ORDER BY f2}} msg] lappend v $msg } {1 {ambiguous field name: f1}} | | > > > > > | 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 | lappend v $msg } {0 {A.f1 11 test2.t1 abc A.f1 33 test2.t1 abc}} do_test select1-6.8 { set v [catch {execsql2 {SELECT A.f1, f1 FROM test1 as A, test1 as B ORDER BY f2}} msg] lappend v $msg } {1 {ambiguous field name: f1}} do_test select1-6.8b { set v [catch {execsql2 {SELECT A.f1, B.f1 FROM test1 as A, test1 as B ORDER BY f2}} msg] lappend v $msg } {1 {ambiguous field name: f2}} do_test select1-6.8c { set v [catch {execsql2 {SELECT A.f1, f1 FROM test1 as A, test1 as A ORDER BY f2}} msg] lappend v $msg } {1 {ambiguous field name: A.f1}} do_test select1-6.9 { set v [catch {execsql2 {SELECT A.f1, B.f1 FROM test1 as A, test1 as B ORDER BY A.f1, B.f1}} msg] lappend v $msg } {0 {A.f1 11 B.f1 11 A.f1 11 B.f1 33 A.f1 33 B.f1 11 A.f1 33 B.f1 33}} finish_test |