]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Selectively include window frames in expression walks/mutates.
authorAndrew Gierth <rhodiumtoad@postgresql.org>
Thu, 3 Oct 2019 09:54:52 +0000 (10:54 +0100)
committerAndrew Gierth <rhodiumtoad@postgresql.org>
Thu, 3 Oct 2019 10:14:30 +0000 (11:14 +0100)
commit0a445f27909aedaf4ecc2efcb05c5d588c02e240
treefa34910652702e765fc4a5f3aade96aa041910d1
parentb978de0eba8582f4a9cde123ca09bc776bde8c83
Selectively include window frames in expression walks/mutates.

query_tree_walker and query_tree_mutator were skipping the
windowClause of the query, without regard for the fact that the
startOffset and endOffset in a WindowClause node are expression trees
that need to be processed. This was an oversight in commit ec4be2ee6
from 2010 which added the expression fields; the main symptom is that
function parameters in window frame clauses don't work in inlined
functions.

Fix (as conservatively as possible since this needs to not break
existing out-of-tree callers) and add tests.

Backpatch all the way, since this has been broken since 9.0.

Per report from Alastair McKinley; fix by me with kibitzing and review
from Tom Lane.

Discussion: https://postgr.es/m/DB6PR0202MB2904E7FDDA9D81504D1E8C68E3800@DB6PR0202MB2904.eurprd02.prod.outlook.com
src/backend/catalog/dependency.c
src/backend/nodes/nodeFuncs.c
src/include/nodes/nodeFuncs.h
src/test/regress/expected/window.out
src/test/regress/sql/window.sql