From ddcee9432bbd5b33c790b0027ab6f7258376e980 Mon Sep 17 00:00:00 2001
From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Date: Thu, 13 Aug 2026 17:24:15 +0530
Subject: [PATCH v20260813 1/3] Make
 generate_queries_for_path_pattern_recurse() interruptible

In case of a very long path pattern with each element pattern being
resolved to many graph elements
generate_queries_for_path_pattern_recurse() may take very long time to
generate all the possible graph paths. Make
generate_queries_for_path_pattern_recurse() interruptible so that a user
may be able to cancel such a query if required and the interrupts are
processed in timely manner.

Author: Satyanarayana Narlapuram <satyanarlapuram@gmail.com>
Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Discussion: https://www.postgresql.org/message-id/CAHg+QDfDwcM4=DSiAV6Ly89YQ5EcMhzO1-9x=mGG1WJzODcAig@mail.gmail.com
---
 src/backend/rewrite/rewriteGraphTable.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/backend/rewrite/rewriteGraphTable.c b/src/backend/rewrite/rewriteGraphTable.c
index cdb1f4c0dca..0eaf28b3de5 100644
--- a/src/backend/rewrite/rewriteGraphTable.c
+++ b/src/backend/rewrite/rewriteGraphTable.c
@@ -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);
 

base-commit: e8a8ccc3ca192178fd3a179a06a91368008899dc
-- 
2.34.1

