-C Implementation\sof\sthe\ssnippet()\sfunction\sfor\sFTS1.\s\sIncludes\sa\sfew\nsimple\stest\scases\sbut\smore\stesting\sis\sneeded.\s(CVS\s3431)
-D 2006-09-21T02:03:09
+C Be\smore\saggressive\swith\sthe\sSQLITE_OMIT_VACUUM\smacro.\s\sSaves\sabout\s150\nbytes\sof\scode\sspace.\s(CVS\s3432)
+D 2006-09-21T11:02:17
F Makefile.in cabd42d34340f49260bc2a7668c38eba8d4cfd99
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
F src/pager.c 0f966f7fa225c377da2021fbbfdd50a48d877000
F src/pager.h 0cff9de5e9019cb695a04d18df8caaaff933a272
-F src/parse.y 3279443a2b8173230dd27b9821373b681bb1f3c8
+F src/parse.y 8c79a1debbd92a4f5609511e9bf0222de78f5ecb
F src/pragma.c dcb79b8170231f3aed99d4004b4d0a0fc14c4b4d
F src/prepare.c bc003436a4897b8f30b940e023a70297e860f805
F src/printf.c b179b6ed12f793e028dd169e2e2e2b2a37eedc63
F src/update.c 951f95ef044cf6d28557c48dc35cb0711a0b9129
F src/utf.c 4459801e9b00cfd69993bfca58545d3775682d6e
F src/util.c 91d4cb189476906639ae611927d939691d1365f6
-F src/vacuum.c fb65647c362589ed4ebb342c85665cadbcbf980c
-F src/vdbe.c a77869949ddd0afe01443611edb949e24e67c91c
+F src/vacuum.c f958275b353bcc54776601582ea35ed427125a9d
+F src/vdbe.c 39f775380fc3b8e30f0743b098c15e03d51bb7eb
F src/vdbe.h 258b5d1c0aaa72192f09ff0568ce42b383f156fa
F src/vdbeInt.h e3eaab262b67b84474625cfc38aec1125c32834b
F src/vdbeapi.c f1858a5edc3a5e32d038514dd9e7e9091400a782
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P bb2e1871cb10b470f96c793bb137c043ef30e1da
-R 2733a08fd53c5688fa09fb4ef51647ba
+P c7ee60d00976efab25a830e7416538010c734129
+R 4a4f7b1d165466da2e1372b56afee139
U drh
-Z 50f7084cc6542485b2db3e3ffa3bb7c3
+Z 2d27498809c9282eb1d2a169b6b639c4
** the parser. Lemon will also generate a header file containing
** numeric codes for all of the tokens.
**
-** @(#) $Id: parse.y,v 1.209 2006/09/11 23:45:49 drh Exp $
+** @(#) $Id: parse.y,v 1.210 2006/09/21 11:02:17 drh Exp $
*/
// All token codes are small integers with #defines that begin with "TK_"
%ifndef SQLITE_OMIT_EXPLAIN
explain ::= EXPLAIN. { sqlite3BeginParse(pParse, 1); }
explain ::= EXPLAIN QUERY PLAN. { sqlite3BeginParse(pParse, 2); }
-%endif
+%endif SQLITE_OMIT_EXPLAIN
///////////////////// Begin and end transactions. ////////////////////////////
//
%type temp {int}
%ifndef SQLITE_OMIT_TEMPDB
temp(A) ::= TEMP. {A = 1;}
-%endif
+%endif SQLITE_OMIT_TEMPDB
temp(A) ::= . {A = 0;}
create_table_args ::= LP columnlist conslist_opt(X) RP(Y). {
sqlite3EndTable(pParse,&X,&Y,0);
TEMP TRIGGER VACUUM VIEW VIRTUAL
%ifdef SQLITE_OMIT_COMPOUND_SELECT
EXCEPT INTERSECT UNION
-%endif
+%endif SQLITE_OMIT_COMPOUND_SELECT
REINDEX RENAME CTIME_KW IF
.
%wildcard ANY.
cmd ::= DROP VIEW ifexists(E) fullname(X). {
sqlite3DropTable(pParse, X, 1, E);
}
-%endif // SQLITE_OMIT_VIEW
+%endif SQLITE_OMIT_VIEW
//////////////////////// The SELECT statement /////////////////////////////////
//
multiselect_op(A) ::= UNION(OP). {A = @OP;}
multiselect_op(A) ::= UNION ALL. {A = TK_ALL;}
multiselect_op(A) ::= EXCEPT|INTERSECT(OP). {A = @OP;}
-%endif // SQLITE_OMIT_COMPOUND_SELECT
+%endif SQLITE_OMIT_COMPOUND_SELECT
oneselect(A) ::= SELECT distinct(D) selcollist(W) from(X) where_opt(Y)
groupby_opt(P) having_opt(Q) orderby_opt(Z) limit_opt(L). {
A = sqlite3SelectNew(W,X,Y,P,Q,Z,D,L.pLimit,L.pOffset);
seltablist_paren(A) ::= seltablist(F). {
A = sqlite3SelectNew(0,F,0,0,0,0,0,0,0);
}
-%endif // SQLITE_OMIT_SUBQUERY
+%endif SQLITE_OMIT_SUBQUERY
%type dbnm {Token}
dbnm(A) ::= . {A.z=0; A.n=0;}
A = sqlite3Expr(TK_CAST, E, 0, &T);
sqlite3ExprSpan(A,&X,&Y);
}
-%endif // SQLITE_OMIT_CAST
+%endif SQLITE_OMIT_CAST
expr(A) ::= ID(X) LP distinct(D) exprlist(Y) RP(E). {
A = sqlite3ExprFunction(Y, &X);
sqlite3ExprSpan(A,&X,&E);
sqlite3SelectDelete(Y);
}
}
-%endif // SQLITE_OMIT_SUBQUERY
+%endif SQLITE_OMIT_SUBQUERY
/* CASE expressions */
expr(A) ::= CASE(C) case_operand(X) case_exprlist(Y) case_else(Z) END(E). {
///////////////////////////// The VACUUM command /////////////////////////////
//
+%ifndef SQLITE_OMIT_VACUUM
cmd ::= VACUUM. {sqlite3Vacuum(pParse);}
cmd ::= VACUUM nm. {sqlite3Vacuum(pParse);}
+%endif SQLITE_OMIT_VACUUM
///////////////////////////// The PRAGMA command /////////////////////////////
//
}
cmd ::= PRAGMA nm(X) dbnm(Z) LP nm(Y) RP. {sqlite3Pragma(pParse,&X,&Z,&Y,0);}
cmd ::= PRAGMA nm(X) dbnm(Z). {sqlite3Pragma(pParse,&X,&Z,0,0);}
-%endif // SQLITE_OMIT_PRAGMA
+%endif SQLITE_OMIT_PRAGMA
plus_num(A) ::= plus_opt number(X). {A = X;}
minus_num(A) ::= MINUS number(X). {A = X;}
number(A) ::= INTEGER|FLOAT(X). {A = X;}
sqlite3ExprSpan(A, &X, &Y);
}
}
-%endif // !SQLITE_OMIT_TRIGGER
+%endif !SQLITE_OMIT_TRIGGER
%type raisetype {int}
raisetype(A) ::= ROLLBACK. {A = OE_Rollback;}
cmd ::= DROP TRIGGER ifexists(NOERR) fullname(X). {
sqlite3DropTrigger(pParse,X,NOERR);
}
-%endif // !SQLITE_OMIT_TRIGGER
+%endif !SQLITE_OMIT_TRIGGER
//////////////////////// ATTACH DATABASE file AS name /////////////////////////
cmd ::= ATTACH database_kw_opt expr(F) AS expr(D) key_opt(K). {
%ifndef SQLITE_OMIT_REINDEX
cmd ::= REINDEX. {sqlite3Reindex(pParse, 0, 0);}
cmd ::= REINDEX nm(X) dbnm(Y). {sqlite3Reindex(pParse, &X, &Y);}
-%endif
+%endif SQLITE_OMIT_REINDEX
/////////////////////////////////// ANALYZE ///////////////////////////////////
%ifndef SQLITE_OMIT_ANALYZE
}
kwcolumn_opt ::= .
kwcolumn_opt ::= COLUMNKW.
-%endif
+%endif SQLITE_OMIT_ALTERTABLE
//////////////////////// CREATE VIRTUAL TABLE ... /////////////////////////////
%ifndef SQLITE_OMIT_VIRTUALTABLE
lp ::= LP(X). {sqlite3VtabArgExtend(pParse,&X);}
anylist ::= .
anylist ::= anylist ANY(X). {sqlite3VtabArgExtend(pParse,&X);}
-%endif
+%endif SQLITE_OMIT_VIRTUALTABLE