diff options
author | drh <> | 2021-02-21 23:44:14 +0000 |
---|---|---|
committer | drh <> | 2021-02-21 23:44:14 +0000 |
commit | a79e2a2d28eab71b7434a77ada3af5c2855d9bef (patch) | |
tree | 47b464c9d63c9a1a665779ba0022dacdbf503ce9 /src/delete.c | |
parent | 7601294ad3fe9f7e0db8eb2478dec0de293b8bb6 (diff) | |
download | sqlite-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.c | 6 |
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, |