v47-0001-replace-some-AST-to-clause.nocfbot
application/octet-stream
Filename: v47-0001-replace-some-AST-to-clause.nocfbot
Type: application/octet-stream
Part: 5
Message:
Re: Row pattern recognition
From 956d0d13c5705a5c445d9df71117d2a6f4b1904f Mon Sep 17 00:00:00 2001
From: jian he <jian.universality@gmail.com>
Date: Fri, 12 Jun 2026 11:30:25 +0800
Subject: [PATCH v47 1/6] replace some AST to clause
---
src/backend/executor/README.rpr | 4 ++--
src/backend/parser/parse_rpr.c | 5 ++---
src/include/nodes/parsenodes.h | 9 ++++-----
3 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/src/backend/executor/README.rpr b/src/backend/executor/README.rpr
index 00af86681b..e913e192b2 100644
--- a/src/backend/executor/README.rpr
+++ b/src/backend/executor/README.rpr
@@ -98,10 +98,10 @@ RPR processing is divided into three phases:
+------------------------------------------------------------+
| 1. Parsing (Parser) |
- | SQL text -> PATTERN AST + DEFINE expression tree |
+ | SQL text -> PATTERN clause + DEFINE expression tree |
| |
| 2. Compilation (Optimizer/Planner) |
- | PATTERN AST -> optimization -> flat NFA element array |
+ | PATTERN clause -> optimization -> flat NFA element array |
| |
| 3. Execution (Executor) |
| Row-by-row matching via NFA simulation |
diff --git a/src/backend/parser/parse_rpr.c b/src/backend/parser/parse_rpr.c
index 3eaea2be75..a21aadae73 100644
--- a/src/backend/parser/parse_rpr.c
+++ b/src/backend/parser/parse_rpr.c
@@ -8,7 +8,7 @@
* - Validates frame options (must start at CURRENT ROW, no EXCLUDE)
* - Validates PATTERN variable count (max RPR_VARID_MAX + 1)
* - Transforms DEFINE clause
- * - Stores the PATTERN AST and the SKIP TO/INITIAL flags
+ * - Stores the PATTERN clause and the SKIP TO/INITIAL flags
*
* Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
@@ -67,7 +67,7 @@ static bool define_walker(Node *node, void *context);
* - Set AFTER MATCH SKIP TO flag
* - Set SEEK/INITIAL flag
* - Transforms DEFINE clause into TargetEntry list
- * - Stores PATTERN AST for deparsing (optimization happens in planner)
+ * - Stores PATTERN clause
*
* Returns early if windef has no rpCommonSyntax (non-RPR window).
*/
@@ -180,7 +180,6 @@ transformRPR(ParseState *pstate, WindowClause *wc, WindowDef *windef,
/* Transform DEFINE clause into list of TargetEntry's */
wc->defineClause = transformDefineClause(pstate, wc, windef, targetlist);
- /* Store PATTERN AST for deparsing */
wc->rpPattern = windef->rpCommonSyntax->rpPattern;
}
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 3266c11a71..f210ee08ed 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -619,7 +619,7 @@ typedef enum RPRPatternNodeType
} RPRPatternNodeType;
/*
- * RPRPatternNode - Row Pattern Recognition pattern AST node
+ * RPRPatternNode - Row Pattern Recognition PATTER clause
*/
typedef struct RPRPatternNode
{
@@ -650,7 +650,7 @@ typedef struct RPCommonSyntax
RPSkipTo rpSkipTo; /* Row Pattern AFTER MATCH SKIP type */
bool initial; /* true if <row pattern initial or seek> is
* initial */
- RPRPatternNode *rpPattern; /* PATTERN clause AST */
+ RPRPatternNode *rpPattern; /* PATTERN clause */
List *rpDefs; /* row pattern definitions clause (list of
* ResTarget) */
ParseLoc location; /* PATTERN keyword location, or -1 */
@@ -1728,8 +1728,7 @@ typedef struct GroupingSet
*
* "defineClause" is Row Pattern Recognition DEFINE clause (list of
* TargetEntry). TargetEntry.resname represents row pattern definition
- * variable name. "rpPattern" represents PATTERN clause as an AST tree
- * (RPRPatternNode).
+ * variable name. "rpPattern" represents the PATTERN clause.
*
* The information relevant for the query jumbling is the partition clause
* type and its bounds.
@@ -1766,7 +1765,7 @@ typedef struct WindowClause
* initial */
/* Row Pattern DEFINE clause (list of TargetEntry) */
List *defineClause;
- /* Row Pattern PATTERN clause AST */
+ /* Row Pattern PATTERN clause */
RPRPatternNode *rpPattern;
} WindowClause;
--
2.34.1