diff options
author | drh <> | 2023-12-19 13:45:05 +0000 |
---|---|---|
committer | drh <> | 2023-12-19 13:45:05 +0000 |
commit | 3e2ec83e0bad02934b2c024d123f1a293c214a4e (patch) | |
tree | 7f3fee8c2c4bffaee6d0846ca9710e87971cc4e3 /src/expr.c | |
parent | 9c36095367d40146167b1edf328e791537dca77c (diff) | |
download | sqlite-3e2ec83e0bad02934b2c024d123f1a293c214a4e.tar.gz sqlite-3e2ec83e0bad02934b2c024d123f1a293c214a4e.zip |
Ignore COLLATE operators when determining whether the result of a subexpression
should be shallow-copied or deep-copied.
FossilOrigin-Name: 34ae36a45e814bed7c8340412c7ef3fc849b82357656d0eb5f0f805e59d846d0
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/expr.c b/src/expr.c index ebe0721ca..fd462c1c5 100644 --- a/src/expr.c +++ b/src/expr.c @@ -5326,8 +5326,10 @@ void sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){ inReg = sqlite3ExprCodeTarget(pParse, pExpr, target); if( inReg!=target ){ u8 op; - if( ALWAYS(pExpr) - && (ExprHasProperty(pExpr,EP_Subquery) || pExpr->op==TK_REGISTER) + Expr *pX = sqlite3ExprSkipCollateAndLikely(pExpr); + testcase( pX!=pExpr ); + if( ALWAYS(pX) + && (ExprHasProperty(pX,EP_Subquery) || pX->op==TK_REGISTER) ){ op = OP_Copy; }else{ |