Re: pgsql: Disable run condition optimization for some WindowFuncs

Поиск
Список
Период
Сортировка
От Tatsuo Ishii
Тема Re: pgsql: Disable run condition optimization for some WindowFuncs
Дата
Msg-id 20240501.140212.1125310800129527161.t-ishii@sranhm.sra.co.jp
обсуждение исходный текст
Ответ на pgsql: Disable run condition optimization for some WindowFuncs  (David Rowley <drowley@postgresql.org>)
Ответы Re: pgsql: Disable run condition optimization for some WindowFuncs
Список pgsql-committers
> Disable run condition optimization for some WindowFuncs
> 
> 94985c210 added code to detect when WindowFuncs were monotonic and
> allowed additional quals to be "pushed down" into the subquery to be
> used as WindowClause runConditions in order to short-circuit execution
> in nodeWindowAgg.c.
> 
> The Node representation of runConditions wasn't well selected and
> because we do qual pushdown before planning the subquery, the planning
> of the subquery could perform subquery pull-up of nested subqueries.
> For WindowFuncs with args, the arguments could be changed after pushing
> the qual down to the subquery.
> 
> This was made more difficult by the fact that the code duplicated the
> WindowFunc inside an OpExpr to include in the WindowClauses runCondition
> field.  This could result in duplication of subqueries and a pull-up of
> such a subquery could result in another initplan parameter being issued
> for the 2nd version of the subplan.  This could result in errors such as:
> 
> ERROR:  WindowFunc not found in subplan target lists
> 
> Here in the backbranches, we don't have the flexibility to improve the
> Node representation to resolve this, so instead we just disable the
> runCondition optimization for ntile() unless the argument is a Const,
> (v16 only) and likewise for count(expr) (both v15 and v16).  count(*) is
> unaffected.  All other window functions which support this optimization
> all take zero arguments and therefore are unaffected.
> 
> Bug: #18170

Maybe you are talking about BUG #18305:
Unexpected error: "WindowFunc not found in subplan target lists" ?

> Reported-by: Zuming Jiang
> Discussion: https://postgr.es/m/18170-f1d17bf9a0d58b24@postgresql.org
> Backpatch-through 15 (master will be fixed independently)
> 
> Branch
> ------
> REL_16_STABLE
> 
> Details
> -------
> https://git.postgresql.org/pg/commitdiff/9d36b883bfaaeee04f09101c5e7cde96906a256e
> 
> Modified Files
> --------------
> src/backend/utils/adt/int8.c         | 15 ++++++
> src/backend/utils/adt/windowfuncs.c  | 29 ++++++++---
> src/test/regress/expected/window.out | 94 ++++++++++++++++++++----------------
> src/test/regress/sql/window.sql      | 43 ++++++++++-------
> 4 files changed, 116 insertions(+), 65 deletions(-)
> 



В списке pgsql-committers по дате отправления:

Предыдущее
От: David Rowley
Дата:
Сообщение: pgsql: Disable run condition optimization for some WindowFuncs
Следующее
От: David Rowley
Дата:
Сообщение: pgsql: Fix typos and incorrect type in read_stream.c