]> granicus.if.org Git - postgresql/commitdiff
Add vacuum_delay_point call in compute_index_stats's per-sample-row loop.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 29 Mar 2015 19:04:09 +0000 (15:04 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 29 Mar 2015 19:04:28 +0000 (15:04 -0400)
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

index 62774a90fc034534544a29e3783d6115c331e769..1a4c27b91c3d4ba54ad340867503c6e6d93f66c2 100644 (file)
@@ -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.