mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-03-12 09:02:30 +01:00
74 lines
3.2 KiB
Diff
74 lines
3.2 KiB
Diff
Patch-Source: https://github.com/apache/age/pull/2130
|
|
--
|
|
From 77ccce8560f0fa862759c98f56585e8ff1c1a2a5 Mon Sep 17 00:00:00 2001
|
|
From: Umar Hayat <m.umarkiani@gmail.com>
|
|
Date: Thu, 7 Nov 2024 10:56:00 +0900
|
|
Subject: [PATCH] Add support for PG17
|
|
|
|
- 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 e20670b2b..54bd27314 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 128acd0fb..d293df8b0 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;
|
|
}
|