1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-09 14:21:03 +03:00

More compaction of expr.c. (CVS 1184)

FossilOrigin-Name: 92e7f78057c4e8f6214b6e0a2d80c3ffcbfdf68e
This commit is contained in:
drh
2004-01-16 16:42:53 +00:00
parent 4efc4754f3
commit 51e9a44592
4 changed files with 21 additions and 43 deletions

View File

@@ -1,5 +1,5 @@
C Incremental\scode\scompaction\sin\sexpr.c.\s\sNow\sabout\s4%\ssmaller.\nLots\smore\swork\sto\sdo.\s(CVS\s1183) C More\scompaction\sof\sexpr.c.\s(CVS\s1184)
D 2004-01-16T15:55:38 D 2004-01-16T16:42:54
F Makefile.in 0515ff9218ad8d5a8f6220f0494b8ef94c67013b F Makefile.in 0515ff9218ad8d5a8f6220f0494b8ef94c67013b
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -31,7 +31,7 @@ F src/copy.c 9e47975ea96751c658bcf1a0c4f0bb7c6ee61e73
F src/date.c bb89fdb9c89e367b9a728c58cb96e4823974a2c1 F src/date.c bb89fdb9c89e367b9a728c58cb96e4823974a2c1
F src/delete.c 0f81e6799c089487615d38e042a2de4d2d6192bc F src/delete.c 0f81e6799c089487615d38e042a2de4d2d6192bc
F src/encode.c 9e70ea1e4e746f23f18180949e94f1bb1c2220d3 F src/encode.c 9e70ea1e4e746f23f18180949e94f1bb1c2220d3
F src/expr.c 5ecbce47b7f163bb1f64bc5e19fbb115ab468f98 F src/expr.c e6a05bec1ca8d80d0901e5ff59c4ce3d9553f6cc
F src/func.c 564c0bbe93c290774b305c0199237b8e8bcbda53 F src/func.c 564c0bbe93c290774b305c0199237b8e8bcbda53
F src/hash.c 9b56ef3b291e25168f630d5643a4264ec011c70e F src/hash.c 9b56ef3b291e25168f630d5643a4264ec011c70e
F src/hash.h 3247573ab95b9dd90bcca0307a75d9a16da1ccc7 F src/hash.h 3247573ab95b9dd90bcca0307a75d9a16da1ccc7
@@ -64,7 +64,7 @@ F src/vacuum.c 77485a64a6e4e358170f150fff681c1624a092b0
F src/vdbe.c 802364c5b1b989ec4592aaffcbf575fa3eb0478b F src/vdbe.c 802364c5b1b989ec4592aaffcbf575fa3eb0478b
F src/vdbe.h 3957844e46fea71fd030e78f6a3bd2f7e320fb43 F src/vdbe.h 3957844e46fea71fd030e78f6a3bd2f7e320fb43
F src/vdbeInt.h eab39bc209b267271bc4afbcf4991d6c229bae9a F src/vdbeInt.h eab39bc209b267271bc4afbcf4991d6c229bae9a
F src/vdbeaux.c 6f2d43643f83656b2555b7ee320397805db11d4c F src/vdbeaux.c dae9f8de7140daebbd621bfccb0982e17c352a9f
F src/where.c 1302d728bd338c237e6a8282e4e3eadbbdf11e45 F src/where.c 1302d728bd338c237e6a8282e4e3eadbbdf11e45
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242 F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
F test/attach.test c26848402e7ac829e043e1fa5e0eb87032e5d81d F test/attach.test c26848402e7ac829e043e1fa5e0eb87032e5d81d
@@ -180,7 +180,7 @@ F www/speed.tcl 2f6b1155b99d39adb185f900456d1d592c4832b3
F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
P 42c79edc2e8d1051b3bca915b4b205c601b8077f P d292ba5148059dce3893b80eabdca4af9f75194e
R 36f16e7773dddd52ae0de77fcf909446 R a82c6cee014268ec5c5592ae977adf6a
U drh U drh
Z 7d1bc38e295a20482fad97622944af0e Z 8377cc2fd09d8eae60d98fbd7e1551ff

View File

@@ -1 +1 @@
d292ba5148059dce3893b80eabdca4af9f75194e 92e7f78057c4e8f6214b6e0a2d80c3ffcbfdf68e

View File

@@ -12,7 +12,7 @@
** This file contains routines used for analyzing expressions and ** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite. ** for generating VDBE code that evaluates expressions in SQLite.
** **
** $Id: expr.c,v 1.105 2004/01/16 15:55:38 drh Exp $ ** $Id: expr.c,v 1.106 2004/01/16 16:42:54 drh Exp $
*/ */
#include "sqliteInt.h" #include "sqliteInt.h"
#include <ctype.h> #include <ctype.h>
@@ -242,7 +242,6 @@ Select *sqliteSelectDup(Select *p){
** initially NULL, then create a new expression list. ** initially NULL, then create a new expression list.
*/ */
ExprList *sqliteExprListAppend(ExprList *pList, Expr *pExpr, Token *pName){ ExprList *sqliteExprListAppend(ExprList *pList, Expr *pExpr, Token *pName){
int i;
if( pList==0 ){ if( pList==0 ){
pList = sqliteMalloc( sizeof(ExprList) ); pList = sqliteMalloc( sizeof(ExprList) );
if( pList==0 ){ if( pList==0 ){
@@ -1013,26 +1012,17 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
} }
break; break;
} }
case TK_STRING:
case TK_FLOAT:
case TK_INTEGER: { case TK_INTEGER: {
if( !sqliteFitsIn32Bits(pExpr->token.z) ){ if( pExpr->op==TK_INTEGER && sqliteFitsIn32Bits(pExpr->token.z) ){
sqliteVdbeAddOp(v, OP_String, 0, 0);
}else{
sqliteVdbeAddOp(v, OP_Integer, atoi(pExpr->token.z), 0); sqliteVdbeAddOp(v, OP_Integer, atoi(pExpr->token.z), 0);
}else{
sqliteVdbeAddOp(v, OP_String, 0, 0);
} }
sqliteVdbeChangeP3(v, -1, pExpr->token.z, pExpr->token.n);
break;
}
case TK_FLOAT: {
sqliteVdbeAddOp(v, OP_String, 0, 0);
assert( pExpr->token.z ); assert( pExpr->token.z );
sqliteVdbeChangeP3(v, -1, pExpr->token.z, pExpr->token.n); sqliteVdbeChangeP3(v, -1, pExpr->token.z, pExpr->token.n);
break; sqliteVdbeDequoteP3(v, -1);
}
case TK_STRING: {
int addr = sqliteVdbeAddOp(v, OP_String, 0, 0);
assert( pExpr->token.z );
sqliteVdbeChangeP3(v, addr, pExpr->token.z, pExpr->token.n);
sqliteVdbeDequoteP3(v, addr);
break; break;
} }
case TK_NULL: { case TK_NULL: {
@@ -1081,23 +1071,6 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
sqliteVdbeAddOp(v, OP_Concat, 2, 0); sqliteVdbeAddOp(v, OP_Concat, 2, 0);
break; break;
} }
case TK_UPLUS: {
Expr *pLeft = pExpr->pLeft;
if( pLeft && pLeft->op==TK_INTEGER ){
if( sqliteFitsIn32Bits(pLeft->token.z) ){
sqliteVdbeAddOp(v, OP_Integer, atoi(pLeft->token.z), 0);
}else{
sqliteVdbeAddOp(v, OP_String, 0, 0);
}
sqliteVdbeChangeP3(v, -1, pLeft->token.z, pLeft->token.n);
}else if( pLeft && pLeft->op==TK_FLOAT ){
sqliteVdbeAddOp(v, OP_String, 0, 0);
sqliteVdbeChangeP3(v, -1, pLeft->token.z, pLeft->token.n);
}else{
sqliteExprCode(pParse, pExpr->pLeft);
}
break;
}
case TK_UMINUS: { case TK_UMINUS: {
assert( pExpr->pLeft ); assert( pExpr->pLeft );
if( pExpr->pLeft->op==TK_FLOAT || pExpr->pLeft->op==TK_INTEGER ){ if( pExpr->pLeft->op==TK_FLOAT || pExpr->pLeft->op==TK_INTEGER ){
@@ -1186,6 +1159,7 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
sqliteVdbeAddOp(v, OP_And, 0, 0); sqliteVdbeAddOp(v, OP_And, 0, 0);
break; break;
} }
case TK_UPLUS:
case TK_AS: { case TK_AS: {
sqliteExprCode(pParse, pExpr->pLeft); sqliteExprCode(pParse, pExpr->pLeft);
break; break;

View File

@@ -280,7 +280,11 @@ void sqliteVdbeChangeP3(Vdbe *p, int addr, const char *zP3, int n){
void sqliteVdbeDequoteP3(Vdbe *p, int addr){ void sqliteVdbeDequoteP3(Vdbe *p, int addr){
Op *pOp; Op *pOp;
assert( p->magic==VDBE_MAGIC_INIT ); assert( p->magic==VDBE_MAGIC_INIT );
if( p->aOp==0 || addr<0 || addr>=p->nOp ) return; if( p->aOp==0 ) return;
if( addr<0 || addr>=p->nOp ){
addr = p->nOp - 1;
if( addr<0 ) return;
}
pOp = &p->aOp[addr]; pOp = &p->aOp[addr];
if( pOp->p3==0 || pOp->p3[0]==0 ) return; if( pOp->p3==0 || pOp->p3[0]==0 ) return;
if( pOp->p3type==P3_POINTER ) return; if( pOp->p3type==P3_POINTER ) return;