diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2019-01-25 11:27:59 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2019-01-25 11:28:49 +0100 |
commit | 7c079d7417a8f2d4bf5144732e2f85117db9214f (patch) | |
tree | fccf611233c0019d18c0680d0b7a78513e937b2c /src/backend/parser/parse_agg.c | |
parent | e3565fd61cee16414a682d2be0d44c112a80a30c (diff) | |
download | postgresql-7c079d7417a8f2d4bf5144732e2f85117db9214f.tar.gz postgresql-7c079d7417a8f2d4bf5144732e2f85117db9214f.zip |
Allow generalized expression syntax for partition bounds
Previously, only literals were allowed. This change allows general
expressions, including functions calls, which are evaluated at the
time the DDL command is executed.
Besides offering some more functionality, it simplifies the parser
structures and removes some inconsistencies in how the literals were
handled.
Author: Kyotaro Horiguchi, Tom Lane, Amit Langote
Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Discussion: https://www.postgresql.org/message-id/flat/9f88b5e0-6da2-5227-20d0-0d7012beaa1c@lab.ntt.co.jp/
Diffstat (limited to 'src/backend/parser/parse_agg.c')
-rw-r--r-- | src/backend/parser/parse_agg.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c index 669fe82c48a..8ed38168667 100644 --- a/src/backend/parser/parse_agg.c +++ b/src/backend/parser/parse_agg.c @@ -507,6 +507,13 @@ check_agglevels_and_constraints(ParseState *pstate, Node *expr) err = _("grouping operations are not allowed in trigger WHEN conditions"); break; + case EXPR_KIND_PARTITION_BOUND: + if (isAgg) + err = _("aggregate functions are not allowed in partition bound"); + else + err = _("grouping operations are not allowed in partition bound"); + + break; case EXPR_KIND_PARTITION_EXPRESSION: if (isAgg) err = _("aggregate functions are not allowed in partition key expressions"); @@ -904,6 +911,9 @@ transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, case EXPR_KIND_TRIGGER_WHEN: err = _("window functions are not allowed in trigger WHEN conditions"); break; + case EXPR_KIND_PARTITION_BOUND: + err = _("window functions are not allowed in partition bound"); + break; case EXPR_KIND_PARTITION_EXPRESSION: err = _("window functions are not allowed in partition key expressions"); break; |