diff options
author | Andres Freund <andres@anarazel.de> | 2014-11-12 18:52:49 +0100 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2014-11-12 21:06:32 +0100 |
commit | 57b2e1049e7fdb0ca7882c74520e409507462eb2 (patch) | |
tree | 8eca934e124c24b4d29d3d1923a33813ec9adcb3 | |
parent | c4d360d18259690442036c1ee07a899cbe4022a0 (diff) |
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.
-rw-r--r-- | contrib/pg_prewarm/pg_prewarm.c | 3 |
1 files changed, 3 insertions, 0 deletions
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; |