aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2001-10-13 01:06:47 +0000
committerdrh <drh@noemail.net>2001-10-13 01:06:47 +0000
commit99fcd718e12cb7564f46b07c2623feca32f94b7e (patch)
tree0622aea6501d2645522783d044ebfd1d4101989d /src/expr.c
parent81a20f21d5de047d647ca8e6de39350550075542 (diff)
downloadsqlite-99fcd718e12cb7564f46b07c2623feca32f94b7e.tar.gz
sqlite-99fcd718e12cb7564f46b07c2623feca32f94b7e.zip
Remove the P3 and label arguments from the internal sqliteVdbeAddOp()
function. This makes the code easier to read and perhaps smaller as well. (CVS 286) FossilOrigin-Name: 288ef1247b94c6c933451d120cdc78e471efc14e
Diffstat (limited to 'src/expr.c')
-rw-r--r--src/expr.c118
1 files changed, 60 insertions, 58 deletions
diff --git a/src/expr.c b/src/expr.c
index 0bf74727a..5ace17836 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -12,7 +12,7 @@
** This file contains routines used for analyzing expressions and
** for generating VDBE code that evaluates expressions in SQLite.
**
-** $Id: expr.c,v 1.29 2001/10/06 16:33:03 drh Exp $
+** $Id: expr.c,v 1.30 2001/10/13 01:06:48 drh Exp $
*/
#include "sqliteInt.h"
@@ -234,7 +234,7 @@ int sqliteExprResolveIds(Parse *pParse, IdList *pTabList, Expr *pExpr){
** table. The cursor number of the temporary table has already
** been put in iTable by sqliteExprResolveInSelect().
*/
- sqliteVdbeAddOp(v, OP_OpenTemp, pExpr->iTable, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_OpenTemp, pExpr->iTable, 0);
if( sqliteSelect(pParse, pExpr->pSelect, SRT_Set, pExpr->iTable) );
}else if( pExpr->pList ){
/* Case 2: expr IN (exprlist)
@@ -262,14 +262,14 @@ int sqliteExprResolveIds(Parse *pParse, IdList *pTabList, Expr *pExpr){
case TK_FLOAT:
case TK_INTEGER:
case TK_STRING: {
- int addr = sqliteVdbeAddOp(v, OP_SetInsert, iSet, 0, 0, 0);
+ int addr = sqliteVdbeAddOp(v, OP_SetInsert, iSet, 0);
sqliteVdbeChangeP3(v, addr, pE2->token.z, pE2->token.n);
sqliteVdbeDequoteP3(v, addr);
break;
}
default: {
sqliteExprCode(pParse, pE2);
- sqliteVdbeAddOp(v, OP_SetInsert, iSet, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_SetInsert, iSet, 0);
break;
}
}
@@ -501,32 +501,32 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
switch( pExpr->op ){
case TK_COLUMN: {
if( pParse->useAgg ){
- sqliteVdbeAddOp(v, OP_AggGet, 0, pExpr->iAgg, 0, 0);
+ sqliteVdbeAddOp(v, OP_AggGet, 0, pExpr->iAgg);
}else if( pExpr->iColumn>=0 ){
- sqliteVdbeAddOp(v, OP_Column, pExpr->iTable, pExpr->iColumn, 0, 0);
+ sqliteVdbeAddOp(v, OP_Column, pExpr->iTable, pExpr->iColumn);
}else{
- sqliteVdbeAddOp(v, OP_Recno, pExpr->iTable, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Recno, pExpr->iTable, 0);
}
break;
}
case TK_INTEGER: {
int i = atoi(pExpr->token.z);
- sqliteVdbeAddOp(v, OP_Integer, i, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Integer, i, 0);
break;
}
case TK_FLOAT: {
- int addr = sqliteVdbeAddOp(v, OP_String, 0, 0, 0, 0);
+ int addr = sqliteVdbeAddOp(v, OP_String, 0, 0);
sqliteVdbeChangeP3(v, addr, pExpr->token.z, pExpr->token.n);
break;
}
case TK_STRING: {
- int addr = sqliteVdbeAddOp(v, OP_String, 0, 0, 0, 0);
+ int addr = sqliteVdbeAddOp(v, OP_String, 0, 0);
sqliteVdbeChangeP3(v, addr, pExpr->token.z, pExpr->token.n);
sqliteVdbeDequoteP3(v, addr);
break;
}
case TK_NULL: {
- sqliteVdbeAddOp(v, OP_String, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_String, 0, 0);
break;
}
case TK_AND:
@@ -537,13 +537,13 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
case TK_SLASH: {
sqliteExprCode(pParse, pExpr->pLeft);
sqliteExprCode(pParse, pExpr->pRight);
- sqliteVdbeAddOp(v, op, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, 0);
break;
}
case TK_CONCAT: {
sqliteExprCode(pParse, pExpr->pLeft);
sqliteExprCode(pParse, pExpr->pRight);
- sqliteVdbeAddOp(v, OP_Concat, 2, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Concat, 2, 0);
break;
}
case TK_LT:
@@ -555,25 +555,26 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
case TK_LIKE:
case TK_GLOB: {
int dest;
- sqliteVdbeAddOp(v, OP_Integer, 1, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Integer, 1, 0);
sqliteExprCode(pParse, pExpr->pLeft);
sqliteExprCode(pParse, pExpr->pRight);
dest = sqliteVdbeCurrentAddr(v) + 2;
- sqliteVdbeAddOp(v, op, 0, dest, 0, 0);
- sqliteVdbeAddOp(v, OP_AddImm, -1, 0, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, dest);
+ sqliteVdbeAddOp(v, OP_AddImm, -1, 0);
break;
}
case TK_UMINUS: {
assert( pExpr->pLeft );
if( pExpr->pLeft->op==TK_INTEGER ){
int i = atoi(pExpr->pLeft->token.z);
- sqliteVdbeAddOp(v, OP_Integer, -i, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Integer, -i, 0);
break;
}else if( pExpr->pLeft->op==TK_FLOAT ){
Token *p = &pExpr->pLeft->token;
char *z = sqliteMalloc( p->n + 2 );
sprintf(z, "-%.*s", p->n, p->z);
- sqliteVdbeAddOp(v, OP_String, 0, 0, z, 0);
+ sqliteVdbeAddOp(v, OP_String, 0, 0);
+ sqliteVdbeChangeP3(v, -1, z, p->n+1);
sqliteFree(z);
break;
}
@@ -581,25 +582,25 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
}
case TK_NOT: {
sqliteExprCode(pParse, pExpr->pLeft);
- sqliteVdbeAddOp(v, op, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, 0);
break;
}
case TK_ISNULL:
case TK_NOTNULL: {
int dest;
- sqliteVdbeAddOp(v, OP_Integer, 1, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Integer, 1, 0);
sqliteExprCode(pParse, pExpr->pLeft);
dest = sqliteVdbeCurrentAddr(v) + 2;
- sqliteVdbeAddOp(v, op, 0, dest, 0, 0);
- sqliteVdbeAddOp(v, OP_AddImm, -1, 0, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, dest);
+ sqliteVdbeAddOp(v, OP_AddImm, -1, 0);
break;
}
case TK_AGG_FUNCTION: {
- sqliteVdbeAddOp(v, OP_AggGet, 0, pExpr->iAgg, 0, 0);
+ sqliteVdbeAddOp(v, OP_AggGet, 0, pExpr->iAgg);
if( pExpr->iColumn==FN_Avg ){
assert( pParse->iAggCount>=0 && pParse->iAggCount<pParse->nAgg );
- sqliteVdbeAddOp(v, OP_AggGet, 0, pParse->iAggCount, 0, 0);
- sqliteVdbeAddOp(v, OP_Divide, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_AggGet, 0, pParse->iAggCount);
+ sqliteVdbeAddOp(v, OP_Divide, 0, 0);
}
break;
}
@@ -610,7 +611,7 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
ExprList *pList = pExpr->pList;
switch( id ){
case FN_Fcnt: {
- sqliteVdbeAddOp(v, OP_Fcnt, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Fcnt, 0, 0);
break;
}
case FN_Min:
@@ -619,21 +620,21 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
for(i=0; i<pList->nExpr; i++){
sqliteExprCode(pParse, pList->a[i].pExpr);
if( i>0 ){
- sqliteVdbeAddOp(v, op, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, 0);
}
}
break;
}
case FN_Length: {
sqliteExprCode(pParse, pList->a[0].pExpr);
- sqliteVdbeAddOp(v, OP_Strlen, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Strlen, 0, 0);
break;
}
case FN_Substr: {
for(i=0; i<pList->nExpr; i++){
sqliteExprCode(pParse, pList->a[i].pExpr);
}
- sqliteVdbeAddOp(v, OP_Substr, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Substr, 0, 0);
break;
}
default: {
@@ -644,27 +645,27 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
break;
}
case TK_SELECT: {
- sqliteVdbeAddOp(v, OP_MemLoad, pExpr->iColumn, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_MemLoad, pExpr->iColumn, 0);
break;
}
case TK_IN: {
int addr;
- sqliteVdbeAddOp(v, OP_Integer, 1, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Integer, 1, 0);
sqliteExprCode(pParse, pExpr->pLeft);
addr = sqliteVdbeCurrentAddr(v);
if( pExpr->pSelect ){
- sqliteVdbeAddOp(v, OP_Found, pExpr->iTable, addr+2, 0, 0);
+ sqliteVdbeAddOp(v, OP_Found, pExpr->iTable, addr+2);
}else{
- sqliteVdbeAddOp(v, OP_SetFound, pExpr->iTable, addr+2, 0, 0);
+ sqliteVdbeAddOp(v, OP_SetFound, pExpr->iTable, addr+2);
}
- sqliteVdbeAddOp(v, OP_AddImm, -1, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_AddImm, -1, 0);
break;
}
case TK_BETWEEN: {
int lbl = sqliteVdbeMakeLabel(v);
- sqliteVdbeAddOp(v, OP_Integer, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Integer, 0, 0);
sqliteExprIfFalse(pParse, pExpr, lbl);
- sqliteVdbeAddOp(v, OP_AddImm, 1, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_AddImm, 1, 0);
sqliteVdbeResolveLabel(v, lbl);
break;
}
@@ -721,39 +722,40 @@ void sqliteExprIfTrue(Parse *pParse, Expr *pExpr, int dest){
case TK_GLOB: {
sqliteExprCode(pParse, pExpr->pLeft);
sqliteExprCode(pParse, pExpr->pRight);
- sqliteVdbeAddOp(v, op, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, dest);
break;
}
case TK_ISNULL:
case TK_NOTNULL: {
sqliteExprCode(pParse, pExpr->pLeft);
- sqliteVdbeAddOp(v, op, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, dest);
break;
}
case TK_IN: {
sqliteExprCode(pParse, pExpr->pLeft);
if( pExpr->pSelect ){
- sqliteVdbeAddOp(v, OP_Found, pExpr->iTable, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_Found, pExpr->iTable, dest);
}else{
- sqliteVdbeAddOp(v, OP_SetFound, pExpr->iTable, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_SetFound, pExpr->iTable, dest);
}
break;
}
case TK_BETWEEN: {
int lbl = sqliteVdbeMakeLabel(v);
sqliteExprCode(pParse, pExpr->pLeft);
- sqliteVdbeAddOp(v, OP_Dup, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Dup, 0, 0);
sqliteExprCode(pParse, pExpr->pList->a[0].pExpr);
- sqliteVdbeAddOp(v, OP_Lt, 0, lbl, 0, 0);
+ sqliteVdbeAddOp(v, OP_Lt, 0, lbl);
sqliteExprCode(pParse, pExpr->pList->a[1].pExpr);
- sqliteVdbeAddOp(v, OP_Le, 0, dest, 0, 0);
- sqliteVdbeAddOp(v, OP_Integer, 0, 0, 0, 0);
- sqliteVdbeAddOp(v, OP_Pop, 1, 0, 0, lbl);
+ sqliteVdbeAddOp(v, OP_Le, 0, dest);
+ sqliteVdbeAddOp(v, OP_Integer, 0, 0);
+ sqliteVdbeResolveLabel(v, lbl);
+ sqliteVdbeAddOp(v, OP_Pop, 1, 0);
break;
}
default: {
sqliteExprCode(pParse, pExpr);
- sqliteVdbeAddOp(v, OP_If, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_If, 0, dest);
break;
}
}
@@ -806,48 +808,48 @@ void sqliteExprIfFalse(Parse *pParse, Expr *pExpr, int dest){
case TK_EQ: {
sqliteExprCode(pParse, pExpr->pLeft);
sqliteExprCode(pParse, pExpr->pRight);
- sqliteVdbeAddOp(v, op, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, dest);
break;
}
case TK_LIKE:
case TK_GLOB: {
sqliteExprCode(pParse, pExpr->pLeft);
sqliteExprCode(pParse, pExpr->pRight);
- sqliteVdbeAddOp(v, op, 1, dest, 0, 0);
+ sqliteVdbeAddOp(v, op, 1, dest);
break;
}
case TK_ISNULL:
case TK_NOTNULL: {
sqliteExprCode(pParse, pExpr->pLeft);
- sqliteVdbeAddOp(v, op, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, op, 0, dest);
break;
}
case TK_IN: {
sqliteExprCode(pParse, pExpr->pLeft);
if( pExpr->pSelect ){
- sqliteVdbeAddOp(v, OP_NotFound, pExpr->iTable, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_NotFound, pExpr->iTable, dest);
}else{
- sqliteVdbeAddOp(v, OP_SetNotFound, pExpr->iTable, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_SetNotFound, pExpr->iTable, dest);
}
break;
}
case TK_BETWEEN: {
int addr;
sqliteExprCode(pParse, pExpr->pLeft);
- sqliteVdbeAddOp(v, OP_Dup, 0, 0, 0, 0);
+ sqliteVdbeAddOp(v, OP_Dup, 0, 0);
sqliteExprCode(pParse, pExpr->pList->a[0].pExpr);
addr = sqliteVdbeCurrentAddr(v);
- sqliteVdbeAddOp(v, OP_Ge, 0, addr+3, 0, 0);
- sqliteVdbeAddOp(v, OP_Pop, 1, 0, 0, 0);
- sqliteVdbeAddOp(v, OP_Goto, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_Ge, 0, addr+3);
+ sqliteVdbeAddOp(v, OP_Pop, 1, 0);
+ sqliteVdbeAddOp(v, OP_Goto, 0, dest);
sqliteExprCode(pParse, pExpr->pList->a[1].pExpr);
- sqliteVdbeAddOp(v, OP_Gt, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_Gt, 0, dest);
break;
}
default: {
sqliteExprCode(pParse, pExpr);
- sqliteVdbeAddOp(v, OP_Not, 0, 0, 0, 0);
- sqliteVdbeAddOp(v, OP_If, 0, dest, 0, 0);
+ sqliteVdbeAddOp(v, OP_Not, 0, 0);
+ sqliteVdbeAddOp(v, OP_If, 0, dest);
break;
}
}