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);
 	}
