mirror of
https://github.com/postgres/postgres.git
synced 2025-10-19 15:49:24 +03:00
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
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#define QTW_EXAMINE_RTES_AFTER 0x20 /* examine RTE nodes after their
|
||||
* contents */
|
||||
#define QTW_DONT_COPY_QUERY 0x40 /* do not copy top Query */
|
||||
#define QTW_EXAMINE_SORTGROUP 0x80 /* include SortGroupNode lists */
|
||||
|
||||
/* callback function for check_functions_in_node */
|
||||
typedef bool (*check_function_callback) (Oid func_id, void *context);
|
||||
|
Reference in New Issue
Block a user