From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Victor Costan Date: Fri, 11 Jan 2019 02:30:28 -0800 Subject: [PATCH 10/17] Fix a problem with nested CTEs with the same table. This backports https://www.sqlite.org/src/info/202dd033019dd274 Bug: 917834 --- third_party/sqlite/src/src/select.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/third_party/sqlite/src/src/select.c b/third_party/sqlite/src/src/select.c index 870c3b5c1739..fab4df68fa17 100644 --- a/third_party/sqlite/src/src/select.c +++ b/third_party/sqlite/src/src/select.c @@ -5464,14 +5464,19 @@ static struct SrcList_item *isSelfJoinView( ){ struct SrcList_item *pItem; for(pItem = pTabList->a; pItempSelect==0 ) continue; if( pItem->fg.viaCoroutine ) continue; if( pItem->zName==0 ) continue; if( sqlite3_stricmp(pItem->zDatabase, pThis->zDatabase)!=0 ) continue; if( sqlite3_stricmp(pItem->zName, pThis->zName)!=0 ) continue; - if( sqlite3ExprCompare(0, - pThis->pSelect->pWhere, pItem->pSelect->pWhere, -1) - ){ + pS1 = pItem->pSelect; + if( pThis->pSelect->selId!=pS1->selId ){ + /* The query flattener left two different CTE tables with identical + ** names in the same FROM clause. */ + continue; + } + if( sqlite3ExprCompare(0, pThis->pSelect->pWhere, pS1->pWhere, -1) ){ /* The view was modified by some other optimization such as ** pushDownWhereTerms() */ continue; -- 2.18.0