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

Optimizations to the processing of integer comparisons. (CVS 420)

FossilOrigin-Name: b7a7dae919be0e4c35b1fe8cb24fa7359a4b1200
This commit is contained in:
drh
2002-03-06 03:08:25 +00:00
parent 4b845d7ef4
commit e684090012
6 changed files with 52 additions and 29 deletions

View File

@@ -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.54 2002/03/03 18:59:41 drh Exp $
** $Id: expr.c,v 1.55 2002/03/06 03:08:26 drh Exp $
*/
#include "sqliteInt.h"
@@ -730,8 +730,12 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
}
break;
}
case TK_FLOAT:
case TK_INTEGER: {
sqliteVdbeAddOp(v, OP_Integer, atoi(pExpr->token.z), 0);
sqliteVdbeChangeP3(v, -1, pExpr->token.z, pExpr->token.n);
break;
}
case TK_FLOAT: {
sqliteVdbeAddOp(v, OP_String, 0, 0);
assert( pExpr->token.z );
sqliteVdbeChangeP3(v, -1, pExpr->token.z, pExpr->token.n);
@@ -798,7 +802,11 @@ void sqliteExprCode(Parse *pParse, Expr *pExpr){
Token *p = &pExpr->pLeft->token;
char *z = sqliteMalloc( p->n + 2 );
sprintf(z, "-%.*s", p->n, p->z);
sqliteVdbeAddOp(v, OP_String, 0, 0);
if( pExpr->pLeft->op==TK_INTEGER ){
sqliteVdbeAddOp(v, OP_Integer, atoi(z), 0);
}else{
sqliteVdbeAddOp(v, OP_String, 0, 0);
}
sqliteVdbeChangeP3(v, -1, z, p->n+1);
sqliteFree(z);
break;