On 27.10.2020 11:34, Peter Eisentraut wrote:
On 2020-09-25 09:40, Craig Ringer wrote:
While working on extensions I've often wanted to enable cache
clobbering for a targeted piece of code, without paying the price of
running it for all backends during postgres startup and any initial
setup tasks that are required.
So here's a patch that, when CLOBBER_CACHE_ALWAYS or
CLOBBER_CACHE_RECURSIVE are defined, adds a GUC named
clobber_cache_depth . It defaults to 1 for CLOBBER_CACHE_ALWAYS or 3
for CLOBBER_CACHE_RECURSIVE to match the existing compiled-in
behaviour. But with this change it's now possible to run Pg with
clobber_cache_depth=0 then set it to 1 only for targeted tests.
clobber_cache_depth is treated as an unknown GUC if Pg was not built
with CLOBBER_CACHE_ALWAYS or CLOBBER_CACHE_RECURSIVE defined.
I think it would be great if the cache clobber code is always compiled
in (but turned off) when building with assertions. The would reduce
the number of hoops to jump through to actually use this locally and
reduce the number of surprises from the build farm.
For backward compatibility, you can arrange it so that the built-in
default of clobber_cache_depth is 1 or 3 if CLOBBER_CACHE_ALWAYS or
CLOBBER_CACHE_RECURSIVE are defined.
Status update for a commitfest entry.
This thread was inactive during the commitfest, so I am going to mark it
as "Returned with Feedback".
Craig, are you planning to continue working on it? The proposed idea is
great and it looks like the patch needs only a minor improvement.
--
Anastasia Lubennikova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company