aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <>2024-03-19 19:42:56 +0000
committerdrh <>2024-03-19 19:42:56 +0000
commit27ea83f66ec0a95ab07e93945e7be1ed76d6499c (patch)
tree808cba6eab997f601c801701f711d1ef64fb96f7 /src/expr.c
parent1fe31dcfabf886517e41cbab3b8435e0e828b44f (diff)
downloadsqlite-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.c9
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++;