Re: compute_index_stats is missing a CHECK_FOR_INTERRUPTS - Mailing list pgsql-hackers

From Jeff Janes
Subject Re: compute_index_stats is missing a CHECK_FOR_INTERRUPTS
Date
Msg-id CAMkU=1yeNKcY8nw-wfPCOQmHMGaDD_msib1dVYq7ff4v5MugbA@mail.gmail.com
Whole thread Raw
In response to Re: compute_index_stats is missing a CHECK_FOR_INTERRUPTS  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: compute_index_stats is missing a CHECK_FOR_INTERRUPTS  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
On Sat, Mar 28, 2015 at 3:37 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Jeff Janes <jeff.janes@gmail.com> writes:
> Analyze on functional indexes cannot be interrupted very easily.
> ...
> The attached patch fixes it, but don't vouch for its safety.

Hm.  The other per-sample-row loops in analyze.c use vacuum_delay_point()
rather than CHECK_FOR_INTERRUPTS() directly.  Ordinarily that wouldn't
make much difference here, but maybe a slow index function might be
incurring I/O?

That isn't the case for me (and if it were, they wouldn't be going through the buffer manager anyway and so would not trigger delay criteria), but that seems like a valid concern in general.  It also explains why I couldn't find CHECK_FOR_INTERRUPTS in other loops of that file, because I was looking for the wrong spelling.

Adding a vacuum_delay_point does solve the immediately observed problem, both the toy one and the more realistic one.

Thanks,

Jeff
Attachment

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Rounding to even for numeric data type
Next
From: "David G. Johnston"
Date:
Subject: Re: Rounding to even for numeric data type