SEARCH and CYCLE clauses This adds the SQL standard feature that adds the SEARCH and CYCLE clauses to recursive queries to be able to do produce breadth- or depth-first search orders and detect cycles. These clauses can be rewritten into queries using existing syntax, and that is what this patch does in the rewriter. Reviewed-by: Vik Fearing <vik@postgresfriends.org> Reviewed-by: Pavel Stehule <pavel.stehule@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/db80ceee-6f97-9b4a-8ee8-3ba0c58e5be2@2ndquadrant.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/3696a600e2292d43c00949ddf0352e4ebb487e5b Modified Files -------------- doc/src/sgml/queries.sgml | 64 ++- doc/src/sgml/ref/select.sgml | 44 ++ src/backend/catalog/dependency.c | 15 + src/backend/nodes/copyfuncs.c | 40 ++ src/backend/nodes/equalfuncs.c | 36 ++ src/backend/nodes/nodeFuncs.c | 42 +- src/backend/nodes/outfuncs.c | 36 ++ src/backend/nodes/readfuncs.c | 44 ++ src/backend/parser/analyze.c | 47 ++- src/backend/parser/gram.y | 58 ++- src/backend/parser/parse_agg.c | 7 + src/backend/parser/parse_cte.c | 193 +++++++++ src/backend/parser/parse_expr.c | 4 + src/backend/parser/parse_func.c | 3 + src/backend/parser/parse_relation.c | 54 ++- src/backend/parser/parse_target.c | 17 +- src/backend/rewrite/Makefile | 1 + src/backend/rewrite/rewriteHandler.c | 18 + src/backend/rewrite/rewriteSearchCycle.c | 668 +++++++++++++++++++++++++++++++ src/backend/utils/adt/ruleutils.c | 47 +++ src/include/nodes/nodes.h | 2 + src/include/nodes/parsenodes.h | 30 +- src/include/parser/analyze.h | 2 + src/include/parser/kwlist.h | 2 + src/include/parser/parse_node.h | 2 + src/include/rewrite/rewriteSearchCycle.h | 21 + src/test/regress/expected/with.out | 558 ++++++++++++++++++++++++++ src/test/regress/sql/with.sql | 279 +++++++++++++ 28 files changed, 2301 insertions(+), 33 deletions(-)
pgsql-committers by date:
Соглашаюсь с условиями обработки персональных данных