aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2020-01-02 02:50:45 +0000
committerdrh <drh@noemail.net>2020-01-02 02:50:45 +0000
commit629b88c683056ad69761cc1ae7e8026dbb4f530f (patch)
treeeecc1359620b222cc124b23360bafde0bef9e90d /src/expr.c
parent36e678bc398e864ec0806cf381408a57d6dcd4c4 (diff)
downloadsqlite-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.c8
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);
}
}