aboutsummaryrefslogtreecommitdiff
path: root/src/include/nodes/nodeFuncs.h
diff options
context:
space:
mode:
authorAndrew Gierth <rhodiumtoad@postgresql.org>2019-10-03 10:54:52 +0100
committerAndrew Gierth <rhodiumtoad@postgresql.org>2019-10-03 10:54:52 +0100
commitb7a1c5539ad34d7357e04cc58f9c02a101482737 (patch)
tree4a16f600470f646cf7bda3f4864799d22cd7e5b5 /src/include/nodes/nodeFuncs.h
parentb1c1aa53182372e907f3f7f090e7eb5f432a4c9a (diff)
downloadpostgresql-b7a1c5539ad34d7357e04cc58f9c02a101482737.tar.gz
postgresql-b7a1c5539ad34d7357e04cc58f9c02a101482737.zip
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
Diffstat (limited to 'src/include/nodes/nodeFuncs.h')
-rw-r--r--src/include/nodes/nodeFuncs.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/include/nodes/nodeFuncs.h b/src/include/nodes/nodeFuncs.h
index 0cb931c82c7..4b5408fa9b1 100644
--- a/src/include/nodes/nodeFuncs.h
+++ b/src/include/nodes/nodeFuncs.h
@@ -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);