diff options
author | drh <drh@noemail.net> | 2015-08-20 19:55:58 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-08-20 19:55:58 +0000 |
commit | 7fcdd06949d63b23ba756b2377fa466e136dd72d (patch) | |
tree | 7a91f962a075682b5bace5d0d4cc5c30b5e9bd85 /src/expr.c | |
parent | cbd8db35f58c647f63ae05d153a148efb4ed8ef3 (diff) | |
parent | b81fba193079eb6276b3fc94849d847b47c5544e (diff) | |
download | sqlite-7fcdd06949d63b23ba756b2377fa466e136dd72d.tar.gz sqlite-7fcdd06949d63b23ba756b2377fa466e136dd72d.zip |
Add support for table-valued functions in the FROM clause implemented as
virtual tables.
FossilOrigin-Name: 9b718b06b156163ae34115b6c5f6d163a7ee7cc3
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/expr.c b/src/expr.c index 5acb90966..1062733cb 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1034,16 +1034,18 @@ SrcList *sqlite3SrcListDup(sqlite3 *db, SrcList *p, int flags){ pNewItem->zDatabase = sqlite3DbStrDup(db, pOldItem->zDatabase); pNewItem->zName = sqlite3DbStrDup(db, pOldItem->zName); pNewItem->zAlias = sqlite3DbStrDup(db, pOldItem->zAlias); - pNewItem->jointype = pOldItem->jointype; + pNewItem->fg = pOldItem->fg; pNewItem->iCursor = pOldItem->iCursor; pNewItem->addrFillSub = pOldItem->addrFillSub; pNewItem->regReturn = pOldItem->regReturn; - pNewItem->isCorrelated = pOldItem->isCorrelated; - pNewItem->viaCoroutine = pOldItem->viaCoroutine; - pNewItem->isRecursive = pOldItem->isRecursive; - pNewItem->zIndexedBy = sqlite3DbStrDup(db, pOldItem->zIndexedBy); - pNewItem->notIndexed = pOldItem->notIndexed; - pNewItem->pIndex = pOldItem->pIndex; + if( pNewItem->fg.isIndexedBy ){ + pNewItem->u1.zIndexedBy = sqlite3DbStrDup(db, pOldItem->u1.zIndexedBy); + } + pNewItem->pIBIndex = pOldItem->pIBIndex; + if( pNewItem->fg.isTabFunc ){ + pNewItem->u1.pFuncArg = + sqlite3ExprListDup(db, pOldItem->u1.pFuncArg, flags); + } pTab = pNewItem->pTab = pOldItem->pTab; if( pTab ){ pTab->nRef++; |