0001-Add-memory-context-debugging-for-GRAPH_TABLE-path-ge.patch
application/octet-stream
Filename: 0001-Add-memory-context-debugging-for-GRAPH_TABLE-path-ge.patch
Type: application/octet-stream
Part: 0
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: unified
Series: patch 0001
| File | + | − |
|---|---|---|
| src/backend/rewrite/rewriteGraphTable.c | 12 | 1 |
diff --git a/src/backend/rewrite/rewriteGraphTable.c b/src/backend/rewrite/rewriteGraphTable.c
index 6867de6d..9b25fe6f 100644
--- a/src/backend/rewrite/rewriteGraphTable.c
+++ b/src/backend/rewrite/rewriteGraphTable.c
@@ -42,6 +42,7 @@
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
+#include "utils/memutils.h"
#include "utils/ruleutils.h"
#include "utils/syscache.h"
@@ -342,7 +343,6 @@ generate_queries_for_path_pattern(RangeTblEntry *rte, List *path_pattern)
foreach_ptr(struct path_factor, pf, path_factors)
path_elem_lists = lappend(path_elem_lists,
get_path_elements_for_path_factor(rte->relid, pf));
-
pathqueries = generate_queries_for_path_pattern_recurse(rte, pathqueries,
NIL, path_elem_lists, 0);
if (!pathqueries)
@@ -367,6 +367,8 @@ generate_queries_for_path_pattern_recurse(RangeTblEntry *rte, List *pathqueries,
foreach_ptr(struct path_element, pe, path_elems)
{
+ CHECK_FOR_INTERRUPTS();
+
/* Update current path being built with current element. */
cur_path = lappend(cur_path, pe);
@@ -383,10 +385,19 @@ generate_queries_for_path_pattern_recurse(RangeTblEntry *rte, List *pathqueries,
pathqueries = lappend(pathqueries, pathquery);
}
else
+ {
+ /* Dump memory context before recursive path query generation */
+ ereport(LOG,
+ (errmsg("GRAPH_TABLE: before generate_queries_for_path_pattern_recurse, "
+ "current memory context \"%s\": %zu bytes total",
+ CurrentMemoryContext->name,
+ MemoryContextMemAllocated(CurrentMemoryContext, true))));
pathqueries = generate_queries_for_path_pattern_recurse(rte, pathqueries,
cur_path,
path_elem_lists,
elempos + 1);
+ }
+
/* Make way for the next element at the same position. */
cur_path = list_delete_last(cur_path);
}