diff options
author | drh <> | 2021-11-19 19:11:58 +0000 |
---|---|---|
committer | drh <> | 2021-11-19 19:11:58 +0000 |
commit | a51e60079fa415661b5942afb2b271968327f441 (patch) | |
tree | d7301fc0082fffe49974a8a3e7076d9523987c3d /src/expr.c | |
parent | d9137e3be0321774dd759340edd3d5d552b4f7ea (diff) | |
download | sqlite-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.c | 16 |
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; } } |