postgres.git / summary / log / commit / refs
commit 57b2e1049e7fdb0ca7882c74520e409507462eb2
Author: Andres Freund <andres@anarazel.de>
Date: Wed Nov 12 17:52:49 2014 +0000
First released in: 9.5.0, 9.4.0
Add interrupt checks to contrib/pg_prewarm.
Currently the extension's pg_prewarm() function didn't check
interrupts once it started "warming" data. Since individual calls can
take a long while it's important for them to be interruptible.
Backpatch to 9.4 where pg_prewarm was introduced.
contrib/pg_prewarm/pg_prewarm.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/contrib/pg_prewarm/pg_prewarm.c b/contrib/pg_prewarm/pg_prewarm.c
index df20e888eff..32c724e5ce2 100644
--- a/contrib/pg_prewarm/pg_prewarm.c
+++ b/contrib/pg_prewarm/pg_prewarm.c
@@ -159,6 +159,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
*/
for (block = first_block; block <= last_block; ++block)
{
+ CHECK_FOR_INTERRUPTS();
PrefetchBuffer(rel, forkNumber, block);
++blocks_done;
}
@@ -177,6 +178,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
*/
for (block = first_block; block <= last_block; ++block)
{
+ CHECK_FOR_INTERRUPTS();
smgrread(rel->rd_smgr, forkNumber, block, blockbuffer);
++blocks_done;
}
@@ -190,6 +192,7 @@ pg_prewarm(PG_FUNCTION_ARGS)
{
Buffer buf;
+ CHECK_FOR_INTERRUPTS();
buf = ReadBufferExtended(rel, forkNumber, block, RBM_NORMAL, NULL);
ReleaseBuffer(buf);
++blocks_done;
[parent: c4d360d18259]