v12-0014-lock-graph-table.patch
application/octet-stream
Filename: v12-0014-lock-graph-table.patch
Type: application/octet-stream
Part: 4
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v12-0014
Subject: lock graph table
| File | + | − |
|---|---|---|
| src/backend/rewrite/rewriteGraphTable.c | 11 | 5 |
From 74334a9b9ad5a0601428789ff8d88864cb291ab7 Mon Sep 17 00:00:00 2001
From: Junwang Zhao <zhjwpku@gmail.com>
Date: Wed, 26 Feb 2025 13:32:41 +0000
Subject: [PATCH v12 14/14] lock graph table
Signed-off-by: Junwang Zhao <zhjwpku@gmail.com>
---
src/backend/rewrite/rewriteGraphTable.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/backend/rewrite/rewriteGraphTable.c b/src/backend/rewrite/rewriteGraphTable.c
index d5e75b791a3..e640a541303 100644
--- a/src/backend/rewrite/rewriteGraphTable.c
+++ b/src/backend/rewrite/rewriteGraphTable.c
@@ -107,6 +107,7 @@ static Node *get_element_property_expr(Oid elemoid, Oid propoid, int rtindex);
Query *
rewriteGraphTable(Query *parsetree, int rt_index)
{
+ Relation rel;
RangeTblEntry *rte;
Query *graph_table_query;
List *path_pattern;
@@ -123,6 +124,7 @@ rewriteGraphTable(Query *parsetree, int rt_index)
AcquireRewriteLocks(graph_table_query, true, false);
+ rel = table_open(rte->relid, AccessShareLock);
rte->rtekind = RTE_SUBQUERY;
rte->subquery = graph_table_query;
rte->lateral = true;
@@ -133,6 +135,7 @@ rewriteGraphTable(Query *parsetree, int rt_index)
*/
rte->graph_pattern = NULL;
rte->graph_table_columns = NIL;
+ table_close(rel, NoLock);
#if 0
elog(INFO, "rewritten:\n%s", pg_get_querydef(copyObject(parsetree), false));
@@ -230,7 +233,8 @@ generate_queries_for_path_pattern(RangeTblEntry *rte, List *path_pattern)
* conjuction is not supported right now.
*/
if (!other->labelexpr)
- other->labelexpr = gep->labelexpr;
+ other ->labelexpr = gep->labelexpr;
+
else if (gep->labelexpr && !equal(other->labelexpr, gep->labelexpr))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -242,12 +246,14 @@ generate_queries_for_path_pattern(RangeTblEntry *rte, List *path_pattern)
* element. Combine by ANDing them.
*/
if (!other->whereClause)
- other->whereClause = gep->whereClause;
+ other ->whereClause = gep->whereClause;
+
else if (gep->whereClause)
- other->whereClause = (Node *) makeBoolExpr(AND_EXPR,
- list_make2(other->whereClause, gep->whereClause),
- -1);
+ other ->whereClause = (Node *) makeBoolExpr(AND_EXPR,
+ list_make2(other->whereClause, gep->whereClause),
+ -1);
pf = other;
+
break;
}
}
--
2.39.5