pgsql: Disable WindowAgg inverse transitions when subplans are present

Поиск
Список
Период
Сортировка
От David Rowley
Тема pgsql: Disable WindowAgg inverse transitions when subplans are present
Дата
Msg-id E1pRQ8o-000rxg-7E@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Disable WindowAgg inverse transitions when subplans are present

When an aggregate function is used as a WindowFunc and a tuple transitions
out of the window frame, we ordinarily try to make use of the aggregate
function's inverse transition function to "unaggregate" the exiting tuple.

This optimization is disabled for various cases, including when the
aggregate contains a volatile function.  In such a case we'd be unable to
ensure that the transition value was calculated to the same value during
transitions and inverse transitions.  Unfortunately, we did this check by
calling contain_volatile_functions() which does not recursively search
SubPlans for volatile functions.  If the aggregate function's arguments or
its FILTER clause contained a subplan with volatile functions then we'd
fail to notice this.

Here we fix this by just disabling the optimization when the WindowFunc
contains any subplans.  Volatile functions are not the only reason that a
subplan may have nonrepeatable results.

Bug: #17777
Reported-by: Anban Company
Discussion: https://postgr.es/m/17777-860b739b6efde977%40postgresql.org
Reviewed-by: Tom Lane
Backpatch-through: 11

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/8d2a8581b6d67cfa05c1f47fa13de9815cdf91f6

Modified Files
--------------
src/backend/executor/nodeWindowAgg.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)


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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: pgsql: Mark more nodes with attribute no_query_jumble
Следующее
От: David Rowley
Дата:
Сообщение: pgsql: Disable WindowAgg inverse transitions when subplans are present