mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Disable the [d1ba200234f40b84|count-of-view optimization] if any subquery
is DISTINCT, as the optimization does not work in that case. Bug reported by [forum/forumpost/a860f5fb2e|forum post a860f5fb2e]. FossilOrigin-Name: d7013b63932b2f5750572ae6bdd259a2b6e6548c20fb9a5559edd22d2f2fc6cb
This commit is contained in:
@ -7201,6 +7201,7 @@ static void agginfoFree(sqlite3 *db, void *pArg){
|
||||
** * There is no WHERE or GROUP BY or HAVING clauses on the subqueries
|
||||
** * The outer query is a simple count(*) with no WHERE clause or other
|
||||
** extraneous syntax.
|
||||
** * None of the subqueries are DISTINCT (forumpost/a860f5fb2e 2025-03-10)
|
||||
**
|
||||
** Return TRUE if the optimization is undertaken.
|
||||
*/
|
||||
@ -7233,7 +7234,11 @@ static int countOfViewOptimization(Parse *pParse, Select *p){
|
||||
if( pSub->op!=TK_ALL && pSub->pPrior ) return 0; /* Must be UNION ALL */
|
||||
if( pSub->pWhere ) return 0; /* No WHERE clause */
|
||||
if( pSub->pLimit ) return 0; /* No LIMIT clause */
|
||||
if( pSub->selFlags & SF_Aggregate ) return 0; /* Not an aggregate */
|
||||
if( pSub->selFlags & (SF_Aggregate|SF_Distinct) ){
|
||||
testcase( pSub->selFlags & SF_Aggregate );
|
||||
testcase( pSub->selFlags & SF_Distinct );
|
||||
return 0; /* Not an aggregate nor DISTINCT */
|
||||
}
|
||||
assert( pSub->pHaving==0 ); /* Due to the previous */
|
||||
pSub = pSub->pPrior; /* Repeat over compound */
|
||||
}while( pSub );
|
||||
|
Reference in New Issue
Block a user