aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2021-02-27 08:11:14 +0100
committerPeter Eisentraut <peter@eisentraut.org>2021-02-27 08:13:24 +0100
commitf4adc41c4f92cc91d507b19e397140c35bb9fd71 (patch)
tree387b6ecdd5e9b4547d887b73f01689aa954f177d /src/backend/parser
parent4e90052c46c7751779ed83627676ed5e74ebe6d4 (diff)
downloadpostgresql-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.y11
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;