aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <>2021-11-19 19:11:58 +0000
committerdrh <>2021-11-19 19:11:58 +0000
commita51e60079fa415661b5942afb2b271968327f441 (patch)
treed7301fc0082fffe49974a8a3e7076d9523987c3d /src/expr.c
parentd9137e3be0321774dd759340edd3d5d552b4f7ea (diff)
downloadsqlite-a51e60079fa415661b5942afb2b271968327f441.tar.gz
sqlite-a51e60079fa415661b5942afb2b271968327f441.zip
Small performance increase and size reduction for sqlite3ExprCompare().
This change also handles some corner cases without the need for ALWAYS(). FossilOrigin-Name: d814ba6effc7c5b021ff625b57371627f3ee326687c508da99f78bc164386b7e
Diffstat (limited to 'src/expr.c')
-rw-r--r--src/expr.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/expr.c b/src/expr.c
index 126a870f9..e41a4fd4e 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -5469,12 +5469,9 @@ int sqlite3ExprCompare(
}
return 2;
}
- if( pA->op!=TK_COLUMN
- && pA->op!=TK_AGG_COLUMN
- && ALWAYS(!ExprHasProperty(pA, EP_IntValue))
- && pA->u.zToken
- ){
- assert( !ExprHasProperty(pB, EP_IntValue) );
+ assert( !ExprHasProperty(pA, EP_IntValue) );
+ assert( !ExprHasProperty(pB, EP_IntValue) );
+ if( pA->u.zToken ){
if( pA->op==TK_FUNCTION || pA->op==TK_AGG_FUNCTION ){
if( sqlite3StrICmp(pA->u.zToken,pB->u.zToken)!=0 ) return 2;
#ifndef SQLITE_OMIT_WINDOWFUNC
@@ -5492,7 +5489,12 @@ int sqlite3ExprCompare(
return 0;
}else if( pA->op==TK_COLLATE ){
if( sqlite3_stricmp(pA->u.zToken,pB->u.zToken)!=0 ) return 2;
- }else if( ALWAYS(pB->u.zToken!=0) && strcmp(pA->u.zToken,pB->u.zToken)!=0 ){
+ }else
+ if( pB->u.zToken!=0
+ && pA->op!=TK_COLUMN
+ && pA->op!=TK_AGG_COLUMN
+ && strcmp(pA->u.zToken,pB->u.zToken)!=0
+ ){
return 2;
}
}