From d12afe114403aee962ddca900842e4460bd17f68 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun, 29 Mar 2015 15:04:09 -0400
Subject: [PATCH] Add vacuum_delay_point call in compute_index_stats's
 per-sample-row loop.

Slow functions in index expressions might cause this loop to take long
enough to make it worth being cancellable.  Probably it would be enough
to call CHECK_FOR_INTERRUPTS here, but for consistency with other
per-sample-row loops in this file, let's use vacuum_delay_point.

Report and patch by Jeff Janes.  Back-patch to all supported branches.
---
 src/backend/commands/analyze.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index 62774a90fc0..1a4c27b91c3 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -738,6 +738,8 @@ compute_index_stats(Relation onerel, double totalrows,
 		{
 			HeapTuple	heapTuple = rows[rowno];
 
+			vacuum_delay_point();
+
 			/*
 			 * Reset the per-tuple context each time, to reclaim any cruft
 			 * left behind by evaluating the predicate or index expressions.
-- 
GitLab