aboutsummaryrefslogtreecommitdiff
path: root/src/delete.c
diff options
context:
space:
mode:
authordrh <>2021-02-21 23:44:14 +0000
committerdrh <>2021-02-21 23:44:14 +0000
commita79e2a2d28eab71b7434a77ada3af5c2855d9bef (patch)
tree47b464c9d63c9a1a665779ba0022dacdbf503ce9 /src/delete.c
parent7601294ad3fe9f7e0db8eb2478dec0de293b8bb6 (diff)
downloadsqlite-a79e2a2d28eab71b7434a77ada3af5c2855d9bef.tar.gz
sqlite-a79e2a2d28eab71b7434a77ada3af5c2855d9bef.zip
Materialize any CTE that is used more than once.
FossilOrigin-Name: ba59159fbe6b83fb6d79fbfee22d983768b0ebbaac7e99d2ac66c810e5e04100
Diffstat (limited to 'src/delete.c')
-rw-r--r--src/delete.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/delete.c b/src/delete.c
index 860a2739a..117347ef9 100644
--- a/src/delete.c
+++ b/src/delete.c
@@ -209,7 +209,11 @@ Expr *sqlite3LimitWhere(
pSrc->a[0].pTab = 0;
pSelectSrc = sqlite3SrcListDup(pParse->db, pSrc, 0);
pSrc->a[0].pTab = pTab;
- pSrc->a[0].pIBIndex = 0;
+ if( pSrc->a[0].fg.isIndexedBy ){
+ pSrc->a[0].u2.pIBIndex = 0;
+ }else if( pSrc->a[0].fg.isCte ){
+ pSrc->a[0].u2.pCteUse->nUse++;
+ }
/* generate the SELECT expression tree. */
pSelect = sqlite3SelectNew(pParse, pEList, pSelectSrc, pWhere, 0 ,0,