Обсуждение: pgsql: Insert CHECK_FOR_INTERRUPTS() calls into btree and hash index
pgsql: Insert CHECK_FOR_INTERRUPTS() calls into btree and hash index
От
tgl@postgresql.org (Tom Lane)
Дата:
Log Message: ----------- Insert CHECK_FOR_INTERRUPTS() calls into btree and hash index scans at the points where we step right or left to the next page. This should ensure reasonable response time to a query cancel request during an unsuccessful index scan, as seen in recent gripe from Marc Cousin. It's a bit trickier than it might seem at first glance, because CHECK_FOR_INTERRUPTS() is a no-op if executed while holding a buffer lock. So we have to do it just at the point where we've dropped one page lock and not yet acquired the next. Remove CHECK_FOR_INTERRUPTS calls at the top level of btgetbitmap and hashgetbitmap, since they're pointless given the added checks. I think that GIST is okay already --- at least, there's a CHECK_FOR_INTERRUPTS at a plausible-looking place in gistnext(). I don't claim to know GIN well enough to try to poke it for this, if indeed it has a problem at all. This is a pre-existing issue, but in view of the lack of prior complaints I'm not going to risk back-patching. Modified Files: -------------- pgsql/src/backend/access/hash: hash.c (r1.109 -> r1.110) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hash.c?r1=1.109&r2=1.110) hashsearch.c (r1.55 -> r1.56) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hashsearch.c?r1=1.55&r2=1.56) pgsql/src/backend/access/nbtree: nbtree.c (r1.168 -> r1.169) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtree.c?r1=1.168&r2=1.169) nbtsearch.c (r1.119 -> r1.120) (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtsearch.c?r1=1.119&r2=1.120)