:-) (CVS 102)

FossilOrigin-Name: 8cce4d279de00da45c5970c8f0946f49e03e6846
This commit is contained in:
drh 2000-06-19 19:09:08 +00:00
parent 1ccde15d69
commit 6206d50a4a
7 changed files with 30 additions and 27 deletions

View File

@ -1,5 +1,5 @@
C :-)\s(CVS\s101)
D 2000-06-17T13:12:39
C :-)\s(CVS\s102)
D 2000-06-19T19:09:09
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
F Makefile.in 4dc16840f68e3b599915e1ec8463d365474dd286
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
@ -13,14 +13,14 @@ F src/delete.c 2d5758055ff546453385524d856feb1b51ea7b8a
F src/expr.c 88ff9ea12a23a3f0dfaf117670524bdc160af597
F src/insert.c b1434c7c7c387c69e467d993e9d05460f1047bcc
F src/main.c e3297835b8e38ca726ac73f2c2bdb7cf08103197
F src/parse.y 766844e4c695d560b4df5b5999162d5e167e3c90
F src/select.c 3a12d76074fa57d7c39c4436bdeb8d7e1eb6fdf4
F src/parse.y 974ed07702bda4f04171ef22776eccbb5dae81ca
F src/select.c 2a91f683d64de0362834248cb291bc601cd2950b
F src/shell.c 78a35607a88b3d557e1666ae9d0c2c03cbb3553e
F src/sqlite.h 58da0a8590133777b741f9836beaef3d58f40268
F src/sqliteInt.h 19954bd2f75632849b265b9d7163a67391ec5148
F src/tclsqlite.c 9f358618ae803bedf4fb96da5154fd45023bc1f7
F src/tokenize.c 77ff8164a8751994bc9926ce282847f653ac0c16
F src/update.c d75df0f725eb8f47c67f1745bf485607cd98cea3
F src/update.c 162fc0b86dcd61d164dedc77081a5e7daf6b8fb0
F src/util.c 38e4bb5edf6fa92e677698c45785bf73c69b9e9f
F src/vdbe.c 00b2ab7e0c0df2ac6eb4bf659656afc30e76c66b
F src/vdbe.h 5f58611b19799de2dbcdefa4eef33a255cfa8d0d
@ -44,7 +44,7 @@ F test/sort.test d582086c4bb7df3fbf50aa72e69d7e235e9f8e31
F test/subselect.test bf8b251a92fb091973c1c469ce499dc9648a41d5
F test/table.test d3e01e4916a99ade7d8f1d534ee1b36d57c00490
F test/tester.tcl 95b286791e6256bb6db0165f9342c70fff549a62
F test/update.test b3f45984cd2b3aea6f24b6d77dc1e721ccaba244
F test/update.test 0f763adc3d84e85224e1dadff72237bcabab1938
F test/vacuum.test 8becf5cfeb897108b35cdd996793e7f1df2f28fd
F test/where.test bbab5a308055fb6087dc23d600b4ad2b72797397
F tool/gdbmdump.c 529e67c78d920606ba196326ea55b57b75fcc82b
@ -58,13 +58,13 @@ F www/arch.fig 4e26e9dca3c49724fc8f554c695ddea9f2413156
F www/arch.png c4d908b79065a72e7dcf19317f36d1324c550e87
F www/arch.tcl 4f6a9afecc099a27bba17b4f8cc9561abc15dc40
F www/c_interface.tcl 9ac800854272db5fe439e07b7435b243a5422293
F www/changes.tcl 7430f73d9426021bceb5316afbbdd227848a9967
F www/changes.tcl b50a89bce019e264523fb38fca93568c5b8121f3
F www/fileformat.tcl b11435fcd2cf2238a1c5e6d16fe5e83bcd14d434
F www/index.tcl 4116afce6a8c63d68882d2b00aa10b079e0129cd
F www/lang.tcl 1645e9107d75709be4c6099b643db235bbe0a151
F www/opcode.tcl 3cdc4bb2515fcfcbe853e3f0c91cd9199e82dadd
F www/sqlite.tcl 5420eab24b539928f80ea9b3088e2549d34f438d
P 1d4fe5599ed0bae18dba5842ab7ea1d34b8ec3ad
R b71b1893baf0b52983e937418e80f686
P 6ed35a1d477906dc7e35bea0579951484fcdc858
R 892d9aaa2c6bca4758a4a4b32ba79561
U drh
Z 91a05b26d5f5bffca90c2fad680404b8
Z 9edc52e075d72b6d54c61660ff2d62ed

View File

@ -1 +1 @@
6ed35a1d477906dc7e35bea0579951484fcdc858
8cce4d279de00da45c5970c8f0946f49e03e6846

View File

@ -26,7 +26,7 @@
** the parser. Lemon will also generate a header file containing
** numeric codes for all of the tokens.
**
** @(#) $Id: parse.y,v 1.21 2000/06/16 20:51:26 drh Exp $
** @(#) $Id: parse.y,v 1.22 2000/06/19 19:09:09 drh Exp $
*/
%token_prefix TK_
%token_type {Token}
@ -47,7 +47,7 @@ input ::= cmdlist.
// These are extra tokens used by the lexer but never seen by the
// parser. We put them in a rule so that the parser generator will
// add them to the sqliteTokens.h output file.
// add them to the parse.h output file.
//
input ::= END_OF_FILE ILLEGAL SPACE UNCLOSED_STRING COMMENT FUNCTION
UMINUS FIELD AGG_FUNCTION.
@ -104,8 +104,7 @@ carg ::= DEFAULT NULL.
// In addition to the type name, we also care about the primary key.
//
ccons ::= NOT NULL.
ccons ::= PRIMARY KEY sortorder.
{sqliteCreateIndex(pParse,0,0,0,0,0);}
ccons ::= PRIMARY KEY sortorder. {sqliteCreateIndex(pParse,0,0,0,0,0);}
ccons ::= UNIQUE.
ccons ::= CHECK LP expr RP.
@ -118,8 +117,7 @@ conslist ::= conslist COMMA tcons.
conslist ::= tcons.
tcons ::= CONSTRAINT id tcons2.
tcons ::= tcons2.
tcons2 ::= PRIMARY KEY LP idxlist(X) RP.
{sqliteCreateIndex(pParse,0,0,X,0,0);}
tcons2 ::= PRIMARY KEY LP idxlist(X) RP. {sqliteCreateIndex(pParse,0,0,X,0,0);}
tcons2 ::= UNIQUE LP idlist RP.
tcons2 ::= CHECK expr.
idlist ::= idlist COMMA id.
@ -193,7 +191,7 @@ from(A) ::= FROM seltablist(X). {A = X;}
stl_prefix(A) ::= seltablist(X) COMMA. {A = X;}
stl_prefix(A) ::= . {A = 0;}
seltablist(A) ::= stl_prefix(X) id(Y). {A = sqliteIdListAppend(X,&Y);}
seltablist(A) ::= stl_prefix(X) id(Y) AS id(Z).
seltablist(A) ::= stl_prefix(X) id(Y) as id(Z).
{A = sqliteIdListAppend(X,&Y);
sqliteIdListAddAlias(A,&Z);}
@ -224,12 +222,12 @@ sortorder(A) ::= . {A = 0;}
%type groupby_opt {ExprList*}
%destructor groupby_opt {sqliteExprListDelete($$);}
groupby_opt(A) ::= . {A = 0;}
groupby_opt(A) ::= . {A = 0;}
groupby_opt(A) ::= GROUP BY exprlist(X). {A = X;}
%type having_opt {Expr*}
%destructor having_opt {sqliteExprDelete($$);}
having_opt(A) ::= . {A = 0;}
having_opt(A) ::= . {A = 0;}
having_opt(A) ::= HAVING expr(X). {A = X;}

View File

@ -24,7 +24,7 @@
** This file contains C code routines that are called by the parser
** to handle SELECT statements.
**
** $Id: select.c,v 1.23 2000/06/08 15:10:48 drh Exp $
** $Id: select.c,v 1.24 2000/06/19 19:09:09 drh Exp $
*/
#include "sqliteInt.h"
@ -534,7 +534,7 @@ static int multiSelect(Parse *pParse, Select *p, int eDest, int iParm){
int iCont, iBreak;
/* INTERSECT is different from the others since it requires
** two temporary tables. Hence it has its own case. Begine
** two temporary tables. Hence it has its own case. Begin
** by allocating the tables we will need.
*/
tab1 = pParse->nTab++;

View File

@ -24,7 +24,7 @@
** This file contains C code routines that are called by the parser
** to handle UPDATE statements.
**
** $Id: update.c,v 1.6 2000/06/17 13:12:40 drh Exp $
** $Id: update.c,v 1.7 2000/06/19 19:09:09 drh Exp $
*/
#include "sqliteInt.h"
@ -103,7 +103,7 @@ void sqliteUpdate(
goto update_cleanup;
}
for(j=0; j<pTab->nCol; j++){
if( strcmp(pTab->aCol[j].zName, pChanges->a[i].zName)==0 ){
if( sqliteStrICmp(pTab->aCol[j].zName, pChanges->a[i].zName)==0 ){
aXRef[j] = i;
break;
}

View File

@ -23,7 +23,7 @@
# This file implements regression tests for SQLite library. The
# focus of this file is testing the UPDATE statement.
#
# $Id: update.test,v 1.2 2000/06/08 16:26:25 drh Exp $
# $Id: update.test,v 1.3 2000/06/19 19:09:09 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -87,8 +87,8 @@ do_test update-3.7 {
# Swap the values of f1 and f2 for all elements
#
do_test update-3.8 {
execsql {UPDATE test1 SET f2=f1, f1=f2}
execsql {SELECT * FROM test1 ORDER BY f1}
execsql {UPDATE test1 SET F2=f1, F1=f2}
execsql {SELECT * FROM test1 ORDER BY F1}
} {2 1 4 2 8 3 16 4 32 5 64 6 128 7 256 8 512 9 1024 10}
# Create an index and make sure updating works with an index.

View File

@ -17,6 +17,11 @@ proc chng {date desc} {
puts "<DD><P><UL>$desc</UL></P></DD>"
}
chng {2000 June 19} {
<li>Bug fix: Column names in UPDATE statements used to be case sensitive.
Now they are not.</li>
}
chng {2000 June 16} {
<li>Added the concatenate string operator (||)</li>
}