diff options
author | drh <drh@noemail.net> | 2020-01-02 02:50:45 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2020-01-02 02:50:45 +0000 |
commit | 629b88c683056ad69761cc1ae7e8026dbb4f530f (patch) | |
tree | eecc1359620b222cc124b23360bafde0bef9e90d /src/expr.c | |
parent | 36e678bc398e864ec0806cf381408a57d6dcd4c4 (diff) | |
download | sqlite-629b88c683056ad69761cc1ae7e8026dbb4f530f.tar.gz sqlite-629b88c683056ad69761cc1ae7e8026dbb4f530f.zip |
Use OP_Copy instead of OP_SCopy to move the results of a scalar subquery.
FossilOrigin-Name: 435c272dcf6ed5f3acb564b8f959557145f117b869547b670258cf5a1908ab6b
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/expr.c b/src/expr.c index 1c03cf634..298843a8a 100644 --- a/src/expr.c +++ b/src/expr.c @@ -4492,7 +4492,13 @@ void sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){ inReg = sqlite3ExprCodeTarget(pParse, pExpr, target); assert( pParse->pVdbe!=0 || pParse->db->mallocFailed ); if( inReg!=target && pParse->pVdbe ){ - sqlite3VdbeAddOp2(pParse->pVdbe, OP_SCopy, inReg, target); + u8 op; + if( ExprHasProperty(pExpr,EP_Subquery) ){ + op = OP_Copy; + }else{ + op = OP_SCopy; + } + sqlite3VdbeAddOp2(pParse->pVdbe, op, inReg, target); } } |