|
|
|
|
@ -80,7 +80,7 @@ |
|
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California |
|
|
|
|
* |
|
|
|
|
* IDENTIFICATION |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.73.2.1 2005/11/22 18:23:23 momjian Exp $ |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.73.2.2 2006/01/19 21:49:30 tgl Exp $ |
|
|
|
|
* |
|
|
|
|
*------------------------------------------------------------------------- |
|
|
|
|
*/ |
|
|
|
|
@ -625,6 +625,36 @@ AcceptInvalidationMessages(void) |
|
|
|
|
{ |
|
|
|
|
ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage, |
|
|
|
|
InvalidateSystemCaches); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Test code to force cache flushes anytime a flush could happen. |
|
|
|
|
* |
|
|
|
|
* If used with CLOBBER_FREED_MEMORY, CLOBBER_CACHE_ALWAYS provides a |
|
|
|
|
* fairly thorough test that the system contains no cache-flush hazards. |
|
|
|
|
* However, it also makes the system unbelievably slow --- the regression |
|
|
|
|
* tests take about 100 times longer than normal. |
|
|
|
|
* |
|
|
|
|
* If you're a glutton for punishment, try CLOBBER_CACHE_RECURSIVELY. |
|
|
|
|
* This slows things by at least a factor of 10000, so I wouldn't suggest |
|
|
|
|
* trying to run the entire regression tests that way. It's useful to |
|
|
|
|
* try a few simple tests, to make sure that cache reload isn't subject |
|
|
|
|
* to internal cache-flush hazards, but after you've done a few thousand |
|
|
|
|
* recursive reloads it's unlikely you'll learn more. |
|
|
|
|
*/ |
|
|
|
|
#if defined(CLOBBER_CACHE_ALWAYS) |
|
|
|
|
{ |
|
|
|
|
static bool in_recursion = false; |
|
|
|
|
|
|
|
|
|
if (!in_recursion) |
|
|
|
|
{ |
|
|
|
|
in_recursion = true; |
|
|
|
|
InvalidateSystemCaches(); |
|
|
|
|
in_recursion = false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#elif defined(CLOBBER_CACHE_RECURSIVELY) |
|
|
|
|
InvalidateSystemCaches(); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|