aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2015-08-19 15:20:00 +0000
committerdrh <drh@noemail.net>2015-08-19 15:20:00 +0000
commit8a48b9c0b18e01b0fec665ad1c86a6fce5fbf1cf (patch)
tree585273f1e2fc5552b6442e4d53aa0eb174334eb6 /src/expr.c
parent398f872d1f8d264068bc58ab9947cb7aa6a42427 (diff)
downloadsqlite-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.c16
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++;