-C Extend\sthe\sinfluence\sof\sa\scouple\sof\sSQLITE_OMIT_**\smacros\sa\slittle\sbit.\s(CVS\s2243)
-D 2005-01-20T11:32:23
+C Remove\sa\sfew\smore\slines\sof\scode\swhen\sSQLITE_OMIT_**\smacros\sare\sdefined.\s(CVS\s2244)
+D 2005-01-20T13:03:10
F Makefile.in ffd81f5e926d40b457071b4de8d7c1fa18f39b5a
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
F src/date.c f3d1f5cd1503dabf426a198f3ebef5afbc122a7f
F src/delete.c b3accca9c38d9a67dbd724f67b04151a13735ebd
F src/experimental.c 8cc66b2be6a011055d75ef19ed2584bcfbb585ad
-F src/expr.c 8f8efe75a57d75c6c27fa580c1495214698edab8
+F src/expr.c 09022cbd4fbdff66fbab0f04d010d413cb06b493
F src/func.c dc188d862d7276ea897655b248e2cb17022686e3
F src/hash.c a97721a55440b7bea31ffe471bb2f6b4123cddd5
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
F src/pragma.c 8ab313986673aa4c45e8693d8aabb9b95ee7b14a
F src/printf.c 3d20b21cfecadacecac3fb7274e746cb81d3d357
F src/random.c eff68e3f257e05e81eae6c4d50a51eb88beb4ff3
-F src/select.c e147c81d57f7146d90a4d5a01f523dfec43808f4
+F src/select.c 1686f2503c9c7f9de4d564944584015b71c50ac3
F src/shell.c 591364a0e9ca4ce53873e21e0294476c0c2b4770
F src/sqlite.h.in 8249b697d71ef6d7f7f752ba4ca04058e9e8b5ff
F src/sqliteInt.h c1acfbeb8b84444e5b86dfce19ff42b5854f6478
F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
F www/whentouse.tcl c3b50d3ac31c54be2a1af9b488a89d22f1e6e746
-P f0add0a60e0afb833202e42cdba97bafe6a59dfc
-R b7d0586837ede46bbec162c278e488af
+P 5b1a9bf6aa5a5c466b88f649e322e81b8466851f
+R db2528b7bd532f73e60abad289bd81fd
U danielk1977
-Z 9a530a08d49f6e6af93c82c07243e25f
+Z b2590dd052208a3aa6c3782df4f94dd4
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
-** $Id: expr.c,v 1.183 2005/01/20 01:51:26 drh Exp $
+** $Id: expr.c,v 1.184 2005/01/20 13:03:10 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
*pnName = 17;
break;
}
- default: {
- *pzName = "can't happen";
- *pnName = 12;
- break;
- }
}
}
sqlite3VdbeDequoteP3(v, -1);
break;
}
+#ifndef SQLITE_OMIT_BLOB_LITERAL
case TK_BLOB: {
assert( TK_BLOB==OP_HexBlob );
sqlite3VdbeOp3(v, op, 0, 0, pExpr->token.z+1, pExpr->token.n-1);
sqlite3VdbeDequoteP3(v, -1);
break;
}
+#endif
case TK_NULL: {
sqlite3VdbeAddOp(v, OP_String8, 0, 0);
break;
sqlite3VdbeResolveLabel(v, expr_end_label);
break;
}
+#ifndef SQLITE_OMIT_TRIGGER
case TK_RAISE: {
if( !pParse->trigStack ){
sqlite3ErrorMsg(pParse,
VdbeComment((v, "# raise(IGNORE)"));
}
}
+#endif
break;
}
}
** This file contains C code routines that are called by the parser
** to handle SELECT statements in SQLite.
**
-** $Id: select.c,v 1.229 2005/01/19 23:24:50 drh Exp $
+** $Id: select.c,v 1.230 2005/01/20 13:03:10 danielk1977 Exp $
*/
#include "sqliteInt.h"
}
switch( eDest ){
+#ifndef SQLITE_OMIT_COMPOUND_SELECT
/* In this mode, write each query result to the key of the temporary
** table iParm.
*/
break;
}
+ /* Construct a record from the query result, but instead of
+ ** saving that record, use it as a key to delete elements from
+ ** the temporary table iParm.
+ */
+ case SRT_Except: {
+ int addr;
+ addr = sqlite3VdbeAddOp(v, OP_MakeRecord, nColumn, NULL_ALWAYS_DISTINCT);
+ sqlite3VdbeChangeP3(v, -1, aff, P3_STATIC);
+ sqlite3VdbeAddOp(v, OP_NotFound, iParm, addr+3);
+ sqlite3VdbeAddOp(v, OP_Delete, iParm, 0);
+ break;
+ }
+#endif
+
/* Store the result as data using a unique key.
*/
case SRT_Table:
break;
}
- /* Construct a record from the query result, but instead of
- ** saving that record, use it as a key to delete elements from
- ** the temporary table iParm.
- */
- case SRT_Except: {
- int addr;
- addr = sqlite3VdbeAddOp(v, OP_MakeRecord, nColumn, NULL_ALWAYS_DISTINCT);
- sqlite3VdbeChangeP3(v, -1, aff, P3_STATIC);
- sqlite3VdbeAddOp(v, OP_NotFound, iParm, addr+3);
- sqlite3VdbeAddOp(v, OP_Delete, iParm, 0);
- break;
- }
-
/* If we are creating a set for an "expr IN (SELECT ...)" construct,
** then there should be a single item on the stack. Write this
** item into the set table with bogus data.
if( pExpr==0 || pTabList==0 ) return 0;
sqlite3ExprResolveNames(pParse, pTabList, 0, 0, pExpr, 1, 0);
+
+ /* The TK_AS operator can only occur in ORDER BY, GROUP BY, HAVING,
+ ** and LIMIT clauses. But pExpr originates in the result set of a
+ ** SELECT. So pExpr can never contain an AS operator.
+ */
+ assert( pExpr->op!=TK_AS );
+
switch( pExpr->op ){
case TK_COLUMN: {
Table *pTab;
zType = columnType(pParse, pS->pSrc, pS->pEList->a[0].pExpr);
break;
}
- case TK_AS:
- /* The TK_AS operator can only occur in ORDER BY, GROUP BY, HAVING,
- ** and LIMIT clauses. But pExpr originates in the result set of a
- ** SELECT. So pExpr can never contain an AS operator.
- */
- assert( 0 );
- /* Fall thru */
default:
zType = 0;
}
sqlite3 *db = pParse->db;
int fullNames, shortNames;
+#ifdef SQLITE_OMIT_EXPLAIN
/* If this is an EXPLAIN, skip this step */
if( pParse->explain ){
return;
}
+#endif
assert( v!=0 );
if( pParse->colNamesSet || v==0 || sqlite3_malloc_failed ) return;
** will be left pointing to a deallocated Table structure after the
** DROP and a coredump will occur the next time the VIEW is used.
*/
+#if 0
void sqlite3SelectUnbind(Select *p){
int i;
SrcList *pSrc = p->pSrc;
}
}
}
+#endif
/*
** This routine associates entries in an ORDER BY expression list with