diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2021-02-27 08:11:14 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2021-02-27 08:13:24 +0100 |
commit | f4adc41c4f92cc91d507b19e397140c35bb9fd71 (patch) | |
tree | 387b6ecdd5e9b4547d887b73f01689aa954f177d /src/backend/parser | |
parent | 4e90052c46c7751779ed83627676ed5e74ebe6d4 (diff) | |
download | postgresql-f4adc41c4f92cc91d507b19e397140c35bb9fd71.tar.gz postgresql-f4adc41c4f92cc91d507b19e397140c35bb9fd71.zip |
Enhanced cycle mark values
Per SQL:202x draft, in the CYCLE clause of a recursive query, the
cycle mark values can be of type boolean and can be omitted, in which
case they default to TRUE and FALSE.
Reviewed-by: Vik Fearing <vik@postgresfriends.org>
Discussion: https://www.postgresql.org/message-id/flat/db80ceee-6f97-9b4a-8ee8-3ba0c58e5be2@2ndquadrant.com
Diffstat (limited to 'src/backend/parser')
-rw-r--r-- | src/backend/parser/gram.y | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index dd72a9fc3c4..652be0b96da 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11442,6 +11442,17 @@ opt_cycle_clause: n->location = @1; $$ = (Node *) n; } + | CYCLE columnList SET ColId USING ColId + { + CTECycleClause *n = makeNode(CTECycleClause); + n->cycle_col_list = $2; + n->cycle_mark_column = $4; + n->cycle_mark_value = makeBoolAConst(true, -1); + n->cycle_mark_default = makeBoolAConst(false, -1); + n->cycle_path_column = $6; + n->location = @1; + $$ = (Node *) n; + } | /*EMPTY*/ { $$ = NULL; |