This is an automated email from the ASF dual-hosted git repository.
jgemignani pushed a commit to branch PG17_prepare
in repository https://gitbox.apache.org/repos/asf/age.git
The following commit(s) were added to refs/heads/PG17_prepare by this push:
new 7b223435 Add support for PG17 (#2130)
7b223435 is described below
commit 7b2234355b9434f9aca9339a04c8f295845339be
Author: Umar Hayat <[email protected]>
AuthorDate: Sat Feb 22 03:20:38 2025 +0900
Add support for PG17 (#2130)
- A new node type is introduced for JSON support, that is
JsonConstructorExpr - wrapper over FuncExpr/Aggref/WindowFunc for
SQL/JSON constructors.
- Added additional checks for JsonConstructorExpr expression node for
which the walker would crash.
- Removed palloc0fast function call (which is not available in PG17)
---
src/backend/nodes/ag_nodes.c | 2 +-
src/backend/parser/cypher_analyze.c | 10 ++++++++--
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/backend/nodes/ag_nodes.c b/src/backend/nodes/ag_nodes.c
index e20670b2..54bd2731 100644
--- a/src/backend/nodes/ag_nodes.c
+++ b/src/backend/nodes/ag_nodes.c
@@ -156,7 +156,7 @@ ExtensibleNode *_new_ag_node(Size size, ag_node_tag tag)
{
ExtensibleNode *n;
- n = (ExtensibleNode *)palloc0fast(size);
+ n = (ExtensibleNode *)palloc0(size);
n->type = T_ExtensibleNode;
n->extnodename = node_names[tag];
diff --git a/src/backend/parser/cypher_analyze.c
b/src/backend/parser/cypher_analyze.c
index 128acd0f..d293df8b 100644
--- a/src/backend/parser/cypher_analyze.c
+++ b/src/backend/parser/cypher_analyze.c
@@ -174,6 +174,8 @@ static bool convert_cypher_walker(Node *node, ParseState
*pstate)
* OpExpr - expression node for an operator invocation
* Const - constant value or expression node
* BoolExpr - expression node for the basic Boolean operators AND, OR,
NOT
+ * JsonConstructorExpr - wrapper over FuncExpr/Aggref/WindowFunc for
+ * SQL/JSON constructors
*
* These are a special case that needs to be ignored.
*
@@ -181,7 +183,8 @@ static bool convert_cypher_walker(Node *node, ParseState
*pstate)
if (IsA(funcexpr, SQLValueFunction)
|| IsA(funcexpr, CoerceViaIO)
|| IsA(funcexpr, Var) || IsA(funcexpr, OpExpr)
- || IsA(funcexpr, Const) || IsA(funcexpr, BoolExpr))
+ || IsA(funcexpr, Const) || IsA(funcexpr, BoolExpr)
+ || IsA(funcexpr, JsonConstructorExpr))
{
return false;
}
@@ -346,6 +349,8 @@ static bool is_func_cypher(FuncExpr *funcexpr)
* OpExpr - expression node for an operator invocation
* Const - constant value or expression node
* BoolExpr - expression node for the basic Boolean operators AND, OR, NOT
+ * JsonConstructorExpr - wrapper over FuncExpr/Aggref/WindowFunc for
+ * SQL/JSON constructors
*
* These are a special case that needs to be ignored.
*
@@ -353,7 +358,8 @@ static bool is_func_cypher(FuncExpr *funcexpr)
if (IsA(funcexpr, SQLValueFunction)
|| IsA(funcexpr, CoerceViaIO)
|| IsA(funcexpr, Var) || IsA(funcexpr, OpExpr)
- || IsA(funcexpr, Const) || IsA(funcexpr, BoolExpr))
+ || IsA(funcexpr, Const) || IsA(funcexpr, BoolExpr)
+ || IsA(funcexpr, JsonConstructorExpr))
{
return false;
}