aboutsummaryrefslogtreecommitdiff
path: root/src/where.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2014-01-14 20:14:09 +0000
committerdan <dan@noemail.net>2014-01-14 20:14:09 +0000
commit8ce7184bc26b1330817a68bca751beac4712cbb0 (patch)
tree90f4cb24d436f0ae8d64b211105ddfb00897f253 /src/where.c
parenta9f5c13d0c7fd6c718ea8c8811e7824eba78e6e9 (diff)
downloadsqlite-8ce7184bc26b1330817a68bca751beac4712cbb0.tar.gz
sqlite-8ce7184bc26b1330817a68bca751beac4712cbb0.zip
Add code to handle recursive CTEs.
FossilOrigin-Name: a5c2a54a07d35166911abc792008c05dea897742
Diffstat (limited to 'src/where.c')
-rw-r--r--src/where.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/where.c b/src/where.c
index d5444a605..8827faa83 100644
--- a/src/where.c
+++ b/src/where.c
@@ -5653,7 +5653,11 @@ WhereInfo *sqlite3WhereBegin(
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
pLoop = pLevel->pWLoop;
if( (pTab->tabFlags & TF_Ephemeral)!=0 || pTab->pSelect ){
- /* Do nothing */
+ if( pTab->tabFlags & TF_Recursive ){
+ int iCur = pTabItem->iCursor;
+ sqlite3VdbeAddOp2(v, OP_OpenEphreader, iCur, pTab->tnum);
+ }
+ /* Otherwise do nothing */
}else
#ifndef SQLITE_OMIT_VIRTUALTABLE
if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){