diff options
author | drh <drh@noemail.net> | 2015-08-19 15:20:00 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-08-19 15:20:00 +0000 |
commit | 8a48b9c0b18e01b0fec665ad1c86a6fce5fbf1cf (patch) | |
tree | 585273f1e2fc5552b6442e4d53aa0eb174334eb6 /src/expr.c | |
parent | 398f872d1f8d264068bc58ab9947cb7aa6a42427 (diff) | |
download | sqlite-8a48b9c0b18e01b0fec665ad1c86a6fce5fbf1cf.tar.gz sqlite-8a48b9c0b18e01b0fec665ad1c86a6fce5fbf1cf.zip |
Minor refactor of the SrcList object so that it is able to hold the argument
list to a table-valued-function in the FROM clause.
FossilOrigin-Name: b919376147597c4b73421abe5788f893baf1560b
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++; |