aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-07-27 18:12:40 +0000
committerdrh <drh@noemail.net>2018-07-27 18:12:40 +0000
commitbcd15938ae67554be43ba93c076bd2430cb62479 (patch)
tree71dac71ac25c98ef883925c322870d9823137fe8 /src
parent7810ab646453c143966dad28f51e1a1950c89f88 (diff)
downloadsqlite-bcd15938ae67554be43ba93c076bd2430cb62479.tar.gz
sqlite-bcd15938ae67554be43ba93c076bd2430cb62479.zip
Faster implementation of sqlite3IsBinary().
FossilOrigin-Name: be05d0db09f43cc3362c28273463d1d236af737a4f8a494cf1050da07ed0df47
Diffstat (limited to 'src')
-rw-r--r--src/expr.c10
-rw-r--r--src/main.c9
2 files changed, 10 insertions, 9 deletions
diff --git a/src/expr.c b/src/expr.c
index 98d93333b..5c9a29f63 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -329,13 +329,6 @@ CollSeq *sqlite3BinaryCompareCollSeq(
}
/*
-** Return true if CollSeq is the default built-in BINARY.
-*/
-int sqlite3IsBinary(const CollSeq *p){
- return p==0 || sqlite3StrICmp(p->zName,sqlite3StrBINARY)==0;
-}
-
-/*
** Generate code for a comparison operator.
*/
static int codeCompare(
@@ -3592,8 +3585,7 @@ expr_code_doover:
case TK_COLUMN: {
int iTab = pExpr->iTable;
if( ExprHasProperty(pExpr, EP_FixedCol) ){
- pExpr = pExpr->pLeft;
- goto expr_code_doover;
+ return sqlite3ExprCodeTarget(pParse, pExpr->pLeft,target);
}
if( iTab<0 ){
if( pParse->iSelfTab<0 ){
diff --git a/src/main.c b/src/main.c
index 07f668881..4ae5c7ecd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -911,6 +911,15 @@ static int binCollFunc(
}
/*
+** Return true if CollSeq is the default built-in BINARY.
+*/
+int sqlite3IsBinary(const CollSeq *p){
+ assert( p==0 || p->xCmp!=binCollFunc || p->pUser!=0
+ || strcmp(p->zName,"BINARY")==0 );
+ return p==0 || (p->xCmp==binCollFunc && p->pUser==0);
+}
+
+/*
** Another built-in collating sequence: NOCASE.
**
** This collating sequence is intended to be used for "case independent