diff options
author | drh <> | 2024-03-19 19:42:56 +0000 |
---|---|---|
committer | drh <> | 2024-03-19 19:42:56 +0000 |
commit | 27ea83f66ec0a95ab07e93945e7be1ed76d6499c (patch) | |
tree | 808cba6eab997f601c801701f711d1ef64fb96f7 /src/expr.c | |
parent | 1fe31dcfabf886517e41cbab3b8435e0e828b44f (diff) | |
download | sqlite-27ea83f66ec0a95ab07e93945e7be1ed76d6499c.tar.gz sqlite-27ea83f66ec0a95ab07e93945e7be1ed76d6499c.zip |
Make sure the new u1.nRow value is copied when making a copy of a SrcItem
object. This fixes a problem in [ac6f095e13e43d66] from yesterady.
FossilOrigin-Name: 262f8f9d80d37160e4126634b99aa48fce2073e61f6365e8bdbe1cc4fa560a96
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/expr.c b/src/expr.c index 3a7065b21..7e3f38279 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1873,15 +1873,16 @@ SrcList *sqlite3SrcListDup(sqlite3 *db, const SrcList *p, int flags){ pNewItem->regResult = pOldItem->regResult; if( pNewItem->fg.isIndexedBy ){ pNewItem->u1.zIndexedBy = sqlite3DbStrDup(db, pOldItem->u1.zIndexedBy); + }else if( pNewItem->fg.isTabFunc ){ + pNewItem->u1.pFuncArg = + sqlite3ExprListDup(db, pOldItem->u1.pFuncArg, flags); + }else{ + pNewItem->u1.nRow = pOldItem->u1.nRow; } pNewItem->u2 = pOldItem->u2; if( pNewItem->fg.isCte ){ pNewItem->u2.pCteUse->nUse++; } - if( pNewItem->fg.isTabFunc ){ - pNewItem->u1.pFuncArg = - sqlite3ExprListDup(db, pOldItem->u1.pFuncArg, flags); - } pTab = pNewItem->pTab = pOldItem->pTab; if( pTab ){ pTab->nTabRef++; |