Commit 6201fa3c authored by Tom Lane's avatar Tom Lane

Rename debug_invalidate_system_caches_always to debug_discard_caches.

The name introduced by commit 4656e3d6 was agreed to be unreasonably
long.  To match this change, rename initdb's recently-added
--clobber-cache option to --discard-caches.

Discussion: https://postgr.es/m/1374320.1625430433@sss.pgh.pa.us
parent a92709fe
...@@ -9340,11 +9340,11 @@ WARNING: there is no transaction in progress ...@@ -9340,11 +9340,11 @@ WARNING: there is no transaction in progress
-- Change application_name of remote connection to special one -- Change application_name of remote connection to special one
-- so that we can easily terminate the connection later. -- so that we can easily terminate the connection later.
ALTER SERVER loopback OPTIONS (application_name 'fdw_retry_check'); ALTER SERVER loopback OPTIONS (application_name 'fdw_retry_check');
-- If debug_invalidate_system_caches_always is active, it results in -- If debug_discard_caches is active, it results in
-- dropping remote connections after every transaction, making it -- dropping remote connections after every transaction, making it
-- impossible to test termination meaningfully. So turn that off -- impossible to test termination meaningfully. So turn that off
-- for this test. -- for this test.
SET debug_invalidate_system_caches_always = 0; SET debug_discard_caches = 0;
-- Make sure we have a remote connection. -- Make sure we have a remote connection.
SELECT 1 FROM ft1 LIMIT 1; SELECT 1 FROM ft1 LIMIT 1;
?column? ?column?
...@@ -9386,7 +9386,7 @@ SELECT 1 FROM ft1 LIMIT 1; -- should fail ...@@ -9386,7 +9386,7 @@ SELECT 1 FROM ft1 LIMIT 1; -- should fail
ERROR: 08006 ERROR: 08006
\set VERBOSITY default \set VERBOSITY default
COMMIT; COMMIT;
RESET debug_invalidate_system_caches_always; RESET debug_discard_caches;
-- ============================================================================= -- =============================================================================
-- test connection invalidation cases and postgres_fdw_get_connections function -- test connection invalidation cases and postgres_fdw_get_connections function
-- ============================================================================= -- =============================================================================
......
...@@ -2831,11 +2831,11 @@ ROLLBACK; ...@@ -2831,11 +2831,11 @@ ROLLBACK;
-- so that we can easily terminate the connection later. -- so that we can easily terminate the connection later.
ALTER SERVER loopback OPTIONS (application_name 'fdw_retry_check'); ALTER SERVER loopback OPTIONS (application_name 'fdw_retry_check');
-- If debug_invalidate_system_caches_always is active, it results in -- If debug_discard_caches is active, it results in
-- dropping remote connections after every transaction, making it -- dropping remote connections after every transaction, making it
-- impossible to test termination meaningfully. So turn that off -- impossible to test termination meaningfully. So turn that off
-- for this test. -- for this test.
SET debug_invalidate_system_caches_always = 0; SET debug_discard_caches = 0;
-- Make sure we have a remote connection. -- Make sure we have a remote connection.
SELECT 1 FROM ft1 LIMIT 1; SELECT 1 FROM ft1 LIMIT 1;
...@@ -2861,7 +2861,7 @@ SELECT 1 FROM ft1 LIMIT 1; -- should fail ...@@ -2861,7 +2861,7 @@ SELECT 1 FROM ft1 LIMIT 1; -- should fail
\set VERBOSITY default \set VERBOSITY default
COMMIT; COMMIT;
RESET debug_invalidate_system_caches_always; RESET debug_discard_caches;
-- ============================================================================= -- =============================================================================
-- test connection invalidation cases and postgres_fdw_get_connections function -- test connection invalidation cases and postgres_fdw_get_connections function
......
...@@ -10337,10 +10337,10 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' ...@@ -10337,10 +10337,10 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry id="guc-debug-invalidate-system-caches-always" xreflabel="debug_invalidate_system_caches_always"> <varlistentry id="guc-debug-discard-caches" xreflabel="debug_discard_caches">
<term><varname>debug_invalidate_system_caches_always</varname> (<type>integer</type>) <term><varname>debug_discard_caches</varname> (<type>integer</type>)
<indexterm> <indexterm>
<primary><varname>debug_invalidate_system_caches_always</varname> configuration parameter</primary> <primary><varname>debug_discard_caches</varname> configuration parameter</primary>
</indexterm> </indexterm>
</term> </term>
<listitem> <listitem>
...@@ -10365,7 +10365,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' ...@@ -10365,7 +10365,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
<para> <para>
This parameter is supported when This parameter is supported when
<symbol>CLOBBER_CACHE_ENABLED</symbol> was defined at compile time <symbol>DISCARD_CACHES_ENABLED</symbol> was defined at compile time
(which happens automatically when using the (which happens automatically when using the
<application>configure</application> option <application>configure</application> option
<option>--enable-cassert</option>). In production builds, its value <option>--enable-cassert</option>). In production builds, its value
......
...@@ -388,17 +388,6 @@ PostgreSQL documentation ...@@ -388,17 +388,6 @@ PostgreSQL documentation
Other, less commonly used, options are also available: Other, less commonly used, options are also available:
<variablelist> <variablelist>
<varlistentry>
<term><option>--clobber-cache</option></term>
<listitem>
<para>
Run the bootstrap backend with the
<literal>debug_invalidate_system_caches_always=1</literal> option.
This takes a very long time and is only of use for deep debugging.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-d</option></term> <term><option>-d</option></term>
<term><option>--debug</option></term> <term><option>--debug</option></term>
...@@ -413,6 +402,17 @@ PostgreSQL documentation ...@@ -413,6 +402,17 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>--discard-caches</option></term>
<listitem>
<para>
Run the bootstrap backend with the
<literal>debug_discard_caches=1</literal> option.
This takes a very long time and is only of use for deep debugging.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-L <replaceable class="parameter">directory</replaceable></option></term> <term><option>-L <replaceable class="parameter">directory</replaceable></option></term>
<listitem> <listitem>
......
...@@ -373,7 +373,7 @@ make check EXTRA_REGRESS_OPTS="--temp-config=test_postgresql.conf" ...@@ -373,7 +373,7 @@ make check EXTRA_REGRESS_OPTS="--temp-config=test_postgresql.conf"
<para> <para>
This can be useful to enable additional logging, adjust resource limits, This can be useful to enable additional logging, adjust resource limits,
or enable extra run-time checks such as <xref or enable extra run-time checks such as <xref
linkend="guc-debug-invalidate-system-caches-always"/>. linkend="guc-debug-discard-caches"/>.
</para> </para>
</sect2> </sect2>
......
...@@ -3606,13 +3606,12 @@ Author: Peter Eisentraut <peter@eisentraut.org> ...@@ -3606,13 +3606,12 @@ Author: Peter Eisentraut <peter@eisentraut.org>
--> -->
<para> <para>
Add <xref linkend="guc-debug-invalidate-system-caches-always"/> Add <xref linkend="guc-debug-discard-caches"/>
to control cache overwriting (Craig Ringer) to control cache flushing for test purposes (Craig Ringer)
</para> </para>
<para> <para>
Previously this could only be controlled at compile time and is Previously this behavior could only be set at compile time.
enabled only in assert builds.
</para> </para>
</listitem> </listitem>
......
...@@ -636,10 +636,10 @@ pg_isolation_test_session_is_blocked(PG_FUNCTION_ARGS) ...@@ -636,10 +636,10 @@ pg_isolation_test_session_is_blocked(PG_FUNCTION_ARGS)
* Check if any of these are in the list of interesting PIDs, that being * Check if any of these are in the list of interesting PIDs, that being
* the sessions that the isolation tester is running. We don't use * the sessions that the isolation tester is running. We don't use
* "arrayoverlaps" here, because it would lead to cache lookups and one of * "arrayoverlaps" here, because it would lead to cache lookups and one of
* our goals is to run quickly with debug_invalidate_system_caches_always * our goals is to run quickly with debug_discard_caches > 0. We expect
* > 0. We expect blocking_pids to be usually empty and otherwise a very * blocking_pids to be usually empty and otherwise a very small number in
* small number in isolation tester cases, so make that the outer loop of * isolation tester cases, so make that the outer loop of a naive search
* a naive search for a match. * for a match.
*/ */
for (i = 0; i < num_blocking_pids; i++) for (i = 0; i < num_blocking_pids; i++)
for (j = 0; j < num_interesting_pids; j++) for (j = 0; j < num_interesting_pids; j++)
......
...@@ -181,7 +181,7 @@ static int numSharedInvalidMessagesArray; ...@@ -181,7 +181,7 @@ static int numSharedInvalidMessagesArray;
static int maxSharedInvalidMessagesArray; static int maxSharedInvalidMessagesArray;
/* GUC storage */ /* GUC storage */
int debug_invalidate_system_caches_always = 0; int debug_discard_caches = 0;
/* /*
* Dynamically-registered callback functions. Current implementation * Dynamically-registered callback functions. Current implementation
...@@ -689,7 +689,7 @@ AcceptInvalidationMessages(void) ...@@ -689,7 +689,7 @@ AcceptInvalidationMessages(void)
ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage, ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage,
InvalidateSystemCaches); InvalidateSystemCaches);
/* /*----------
* Test code to force cache flushes anytime a flush could happen. * Test code to force cache flushes anytime a flush could happen.
* *
* This helps detect intermittent faults caused by code that reads a cache * This helps detect intermittent faults caused by code that reads a cache
...@@ -697,28 +697,28 @@ AcceptInvalidationMessages(void) ...@@ -697,28 +697,28 @@ AcceptInvalidationMessages(void)
* rarely actually does so. This can spot issues that would otherwise * rarely actually does so. This can spot issues that would otherwise
* only arise with badly timed concurrent DDL, for example. * only arise with badly timed concurrent DDL, for example.
* *
* The default debug_invalidate_system_caches_always = 0 does no forced * The default debug_discard_caches = 0 does no forced cache flushes.
* cache flushes.
* *
* If used with CLOBBER_FREED_MEMORY, * If used with CLOBBER_FREED_MEMORY,
* debug_invalidate_system_caches_always = 1 (CLOBBER_CACHE_ALWAYS) * debug_discard_caches = 1 (formerly known as CLOBBER_CACHE_ALWAYS)
* provides a fairly thorough test that the system contains no cache-flush * provides a fairly thorough test that the system contains no cache-flush
* hazards. However, it also makes the system unbelievably slow --- the * hazards. However, it also makes the system unbelievably slow --- the
* regression tests take about 100 times longer than normal. * regression tests take about 100 times longer than normal.
* *
* If you're a glutton for punishment, try * If you're a glutton for punishment, try
* debug_invalidate_system_caches_always = 3 (CLOBBER_CACHE_RECURSIVELY). * debug_discard_caches = 3 (formerly known as CLOBBER_CACHE_RECURSIVELY).
* This slows things by at least a factor of 10000, so I wouldn't suggest * 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 * 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 * 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 * internal cache-flush hazards, but after you've done a few thousand
* recursive reloads it's unlikely you'll learn more. * recursive reloads it's unlikely you'll learn more.
*----------
*/ */
#ifdef CLOBBER_CACHE_ENABLED #ifdef DISCARD_CACHES_ENABLED
{ {
static int recursion_depth = 0; static int recursion_depth = 0;
if (recursion_depth < debug_invalidate_system_caches_always) if (recursion_depth < debug_discard_caches)
{ {
recursion_depth++; recursion_depth++;
InvalidateSystemCaches(); InvalidateSystemCaches();
......
...@@ -897,9 +897,8 @@ BuildCachedPlan(CachedPlanSource *plansource, List *qlist, ...@@ -897,9 +897,8 @@ BuildCachedPlan(CachedPlanSource *plansource, List *qlist,
* rejected a generic plan, it's possible to reach here with is_valid * rejected a generic plan, it's possible to reach here with is_valid
* false due to an invalidation while making the generic plan. In theory * false due to an invalidation while making the generic plan. In theory
* the invalidation must be a false positive, perhaps a consequence of an * the invalidation must be a false positive, perhaps a consequence of an
* sinval reset event or the debug_invalidate_system_caches_always code. * sinval reset event or the debug_discard_caches code. But for safety,
* But for safety, let's treat it as real and redo the * let's treat it as real and redo the RevalidateCachedQuery call.
* RevalidateCachedQuery call.
*/ */
if (!plansource->is_valid) if (!plansource->is_valid)
qlist = RevalidateCachedQuery(plansource, queryEnv); qlist = RevalidateCachedQuery(plansource, queryEnv);
......
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
#define MAYBE_RECOVER_RELATION_BUILD_MEMORY 1 #define MAYBE_RECOVER_RELATION_BUILD_MEMORY 1
#else #else
#define RECOVER_RELATION_BUILD_MEMORY 0 #define RECOVER_RELATION_BUILD_MEMORY 0
#ifdef CLOBBER_CACHE_ENABLED #ifdef DISCARD_CACHES_ENABLED
#define MAYBE_RECOVER_RELATION_BUILD_MEMORY 1 #define MAYBE_RECOVER_RELATION_BUILD_MEMORY 1
#endif #endif
#endif #endif
...@@ -1011,10 +1011,10 @@ RelationBuildDesc(Oid targetRelId, bool insertIt) ...@@ -1011,10 +1011,10 @@ RelationBuildDesc(Oid targetRelId, bool insertIt)
* data, reasoning that the caller's context is at worst of transaction * data, reasoning that the caller's context is at worst of transaction
* scope, and relcache loads shouldn't happen so often that it's essential * scope, and relcache loads shouldn't happen so often that it's essential
* to recover transient data before end of statement/transaction. However * to recover transient data before end of statement/transaction. However
* that's definitely not true in clobber-cache test builds, and perhaps * that's definitely not true when debug_discard_caches is active, and
* it's not true in other cases. * perhaps it's not true in other cases.
* *
* When cache clobbering is enabled or when forced to by * When debug_discard_caches is active or when forced to by
* RECOVER_RELATION_BUILD_MEMORY=1, arrange to allocate the junk in a * RECOVER_RELATION_BUILD_MEMORY=1, arrange to allocate the junk in a
* temporary context that we'll free before returning. Make it a child of * temporary context that we'll free before returning. Make it a child of
* caller's context so that it will get cleaned up appropriately if we * caller's context so that it will get cleaned up appropriately if we
...@@ -1024,7 +1024,7 @@ RelationBuildDesc(Oid targetRelId, bool insertIt) ...@@ -1024,7 +1024,7 @@ RelationBuildDesc(Oid targetRelId, bool insertIt)
MemoryContext tmpcxt = NULL; MemoryContext tmpcxt = NULL;
MemoryContext oldcxt = NULL; MemoryContext oldcxt = NULL;
if (RECOVER_RELATION_BUILD_MEMORY || debug_invalidate_system_caches_always > 0) if (RECOVER_RELATION_BUILD_MEMORY || debug_discard_caches > 0)
{ {
tmpcxt = AllocSetContextCreate(CurrentMemoryContext, tmpcxt = AllocSetContextCreate(CurrentMemoryContext,
"RelationBuildDesc workspace", "RelationBuildDesc workspace",
...@@ -1627,11 +1627,10 @@ LookupOpclassInfo(Oid operatorClassOid, ...@@ -1627,11 +1627,10 @@ LookupOpclassInfo(Oid operatorClassOid,
* otherwise. However it can be helpful for detecting bugs in the cache * otherwise. However it can be helpful for detecting bugs in the cache
* loading logic itself, such as reliance on a non-nailed index. Given * loading logic itself, such as reliance on a non-nailed index. Given
* the limited use-case and the fact that this adds a great deal of * the limited use-case and the fact that this adds a great deal of
* expense, we enable it only for high values of * expense, we enable it only for high values of debug_discard_caches.
* debug_invalidate_system_caches_always.
*/ */
#ifdef CLOBBER_CACHE_ENABLED #ifdef DISCARD_CACHES_ENABLED
if (debug_invalidate_system_caches_always > 2) if (debug_discard_caches > 2)
opcentry->valid = false; opcentry->valid = false;
#endif #endif
......
...@@ -3507,13 +3507,13 @@ static struct config_int ConfigureNamesInt[] = ...@@ -3507,13 +3507,13 @@ static struct config_int ConfigureNamesInt[] =
}, },
{ {
{"debug_invalidate_system_caches_always", PGC_SUSET, DEVELOPER_OPTIONS, {"debug_discard_caches", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Aggressively invalidate system caches for debugging purposes."), gettext_noop("Aggressively flush system caches for debugging purposes."),
NULL, NULL,
GUC_NOT_IN_SAMPLE GUC_NOT_IN_SAMPLE
}, },
&debug_invalidate_system_caches_always, &debug_discard_caches,
#ifdef CLOBBER_CACHE_ENABLED #ifdef DISCARD_CACHES_ENABLED
/* Set default based on older compile-time-only cache clobber macros */ /* Set default based on older compile-time-only cache clobber macros */
#if defined(CLOBBER_CACHE_RECURSIVELY) #if defined(CLOBBER_CACHE_RECURSIVELY)
3, 3,
...@@ -3523,9 +3523,9 @@ static struct config_int ConfigureNamesInt[] = ...@@ -3523,9 +3523,9 @@ static struct config_int ConfigureNamesInt[] =
0, 0,
#endif #endif
0, 5, 0, 5,
#else /* not CLOBBER_CACHE_ENABLED */ #else /* not DISCARD_CACHES_ENABLED */
0, 0, 0, 0, 0, 0,
#endif /* not CLOBBER_CACHE_ENABLED */ #endif /* not DISCARD_CACHES_ENABLED */
NULL, NULL, NULL NULL, NULL, NULL
}, },
......
...@@ -2266,8 +2266,8 @@ usage(const char *progname) ...@@ -2266,8 +2266,8 @@ usage(const char *progname)
printf(_(" -X, --waldir=WALDIR location for the write-ahead log directory\n")); printf(_(" -X, --waldir=WALDIR location for the write-ahead log directory\n"));
printf(_(" --wal-segsize=SIZE size of WAL segments, in megabytes\n")); printf(_(" --wal-segsize=SIZE size of WAL segments, in megabytes\n"));
printf(_("\nLess commonly used options:\n")); printf(_("\nLess commonly used options:\n"));
printf(_(" --clobber-cache use cache-clobbering debug option\n"));
printf(_(" -d, --debug generate lots of debugging output\n")); printf(_(" -d, --debug generate lots of debugging output\n"));
printf(_(" --discard-caches set debug_discard_caches=1\n"));
printf(_(" -L DIRECTORY where to find the input files\n")); printf(_(" -L DIRECTORY where to find the input files\n"));
printf(_(" -n, --no-clean do not clean up after errors\n")); printf(_(" -n, --no-clean do not clean up after errors\n"));
printf(_(" -N, --no-sync do not wait for changes to be written safely to disk\n")); printf(_(" -N, --no-sync do not wait for changes to be written safely to disk\n"));
...@@ -2947,7 +2947,7 @@ main(int argc, char *argv[]) ...@@ -2947,7 +2947,7 @@ main(int argc, char *argv[])
{"wal-segsize", required_argument, NULL, 12}, {"wal-segsize", required_argument, NULL, 12},
{"data-checksums", no_argument, NULL, 'k'}, {"data-checksums", no_argument, NULL, 'k'},
{"allow-group-access", no_argument, NULL, 'g'}, {"allow-group-access", no_argument, NULL, 'g'},
{"clobber-cache", no_argument, NULL, 14}, {"discard-caches", no_argument, NULL, 14},
{NULL, 0, NULL, 0} {NULL, 0, NULL, 0}
}; };
...@@ -3092,7 +3092,7 @@ main(int argc, char *argv[]) ...@@ -3092,7 +3092,7 @@ main(int argc, char *argv[])
case 14: case 14:
extra_options = psprintf("%s %s", extra_options = psprintf("%s %s",
extra_options, extra_options,
"-c debug_invalidate_system_caches_always=1"); "-c debug_discard_caches=1");
break; break;
default: default:
/* getopt_long already emitted a complaint */ /* getopt_long already emitted a complaint */
......
...@@ -322,36 +322,36 @@ ...@@ -322,36 +322,36 @@
/* #define RANDOMIZE_ALLOCATED_MEMORY */ /* #define RANDOMIZE_ALLOCATED_MEMORY */
/* /*
* For cache invalidation debugging, define CLOBBER_CACHE_ENABLED to enable * For cache-invalidation debugging, define DISCARD_CACHES_ENABLED to enable
* use of the debug_invalidate_system_caches_always GUC to aggressively flush * use of the debug_discard_caches GUC to aggressively flush syscache/relcache
* syscache/relcache entries whenever it's possible to deliver invalidations. * entries whenever it's possible to deliver invalidations. See
* See AcceptInvalidationMessages() in src/backend/utils/cache/inval.c for * AcceptInvalidationMessages() in src/backend/utils/cache/inval.c for
* details. * details.
* *
* USE_ASSERT_CHECKING builds default to enabling this. It's possible to use * USE_ASSERT_CHECKING builds default to enabling this. It's possible to use
* CLOBBER_CACHE_ENABLED without a cassert build and the implied * DISCARD_CACHES_ENABLED without a cassert build and the implied
* CLOBBER_FREED_MEMORY and MEMORY_CONTEXT_CHECKING options but it's unlikely * CLOBBER_FREED_MEMORY and MEMORY_CONTEXT_CHECKING options, but it's unlikely
* to be as effective at identifying problems. * to be as effective at identifying problems.
*/ */
/* #define CLOBBER_CACHE_ENABLED */ /* #define DISCARD_CACHES_ENABLED */
#if defined(USE_ASSERT_CHECKING) && !defined(CLOBBER_CACHE_ENABLED) #if defined(USE_ASSERT_CHECKING) && !defined(DISCARD_CACHES_ENABLED)
#define CLOBBER_CACHE_ENABLED #define DISCARD_CACHES_ENABLED
#endif #endif
/* /*
* Backwards compatibility for the older compile-time-only cache clobber * Backwards compatibility for the older compile-time-only clobber-cache
* macros. * macros.
*/ */
#if !defined(CLOBBER_CACHE_ENABLED) && (defined(CLOBBER_CACHE_ALWAYS) || defined(CLOBBER_CACHE_RECURSIVELY)) #if !defined(DISCARD_CACHES_ENABLED) && (defined(CLOBBER_CACHE_ALWAYS) || defined(CLOBBER_CACHE_RECURSIVELY))
#define CLOBBER_CACHE_ENABLED #define DISCARD_CACHES_ENABLED
#endif #endif
/* /*
* Recover memory used for relcache entries when invalidated. See * Recover memory used for relcache entries when invalidated. See
* RelationBuildDescr() in src/backend/utils/cache/relcache.c. * RelationBuildDescr() in src/backend/utils/cache/relcache.c.
* *
* This is active automatically for clobber cache builds when clobbering is * This is active automatically for clobber-cache builds when clobbering is
* active, but can be overridden here by explicitly defining * active, but can be overridden here by explicitly defining
* RECOVER_RELATION_BUILD_MEMORY. Define to 1 to always free relation cache * RECOVER_RELATION_BUILD_MEMORY. Define to 1 to always free relation cache
* memory even when clobber is off, or to 0 to never free relation cache * memory even when clobber is off, or to 0 to never free relation cache
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include "storage/relfilenode.h" #include "storage/relfilenode.h"
#include "utils/relcache.h" #include "utils/relcache.h"
extern PGDLLIMPORT int debug_invalidate_system_caches_always; extern PGDLLIMPORT int debug_discard_caches;
typedef void (*SyscacheCallbackFunction) (Datum arg, int cacheid, uint32 hashvalue); typedef void (*SyscacheCallbackFunction) (Datum arg, int cacheid, uint32 hashvalue);
typedef void (*RelcacheCallbackFunction) (Datum arg, Oid relid); typedef void (*RelcacheCallbackFunction) (Datum arg, Oid relid);
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
-- --
-- These tests logically belong in plpgsql_record.sql, and perhaps someday -- These tests logically belong in plpgsql_record.sql, and perhaps someday
-- can be merged back into it. For now, however, their results are different -- can be merged back into it. For now, however, their results are different
-- depending on debug_invalidate_system_caches_always, so we must have two -- depending on debug_discard_caches, so we must have two expected-output
-- expected-output files to cover both cases. To minimize the maintenance -- files to cover both cases. To minimize the maintenance effort resulting
-- effort resulting from that, this file should contain only tests that -- from that, this file should contain only tests that do have different
-- do have different results under debug_invalidate_system_caches_always. -- results under debug_discard_caches.
-- --
-- check behavior with changes of a named rowtype -- check behavior with changes of a named rowtype
create table c_mutable(f1 int, f2 text); create table c_mutable(f1 int, f2 text);
...@@ -21,7 +21,7 @@ select c_sillyaddone(42); ...@@ -21,7 +21,7 @@ select c_sillyaddone(42);
alter table c_mutable drop column f1; alter table c_mutable drop column f1;
alter table c_mutable add column f1 float8; alter table c_mutable add column f1 float8;
-- currently, this fails due to cached plan for "r.f1 + 1" expression -- currently, this fails due to cached plan for "r.f1 + 1" expression
-- (but if debug_invalidate_system_caches_always is on, it will succeed) -- (but if debug_discard_caches is on, it will succeed)
select c_sillyaddone(42); select c_sillyaddone(42);
ERROR: type of parameter 4 (double precision) does not match that when preparing the plan (integer) ERROR: type of parameter 4 (double precision) does not match that when preparing the plan (integer)
CONTEXT: PL/pgSQL function c_sillyaddone(integer) line 1 at RETURN CONTEXT: PL/pgSQL function c_sillyaddone(integer) line 1 at RETURN
...@@ -52,7 +52,7 @@ select show_result_type('select 1 as a'); ...@@ -52,7 +52,7 @@ select show_result_type('select 1 as a');
(1 row) (1 row)
-- currently this fails due to cached plan for pg_typeof expression -- currently this fails due to cached plan for pg_typeof expression
-- (but if debug_invalidate_system_caches_always is on, it will succeed) -- (but if debug_discard_caches is on, it will succeed)
select show_result_type('select 2.0 as a'); select show_result_type('select 2.0 as a');
ERROR: type of parameter 5 (numeric) does not match that when preparing the plan (integer) ERROR: type of parameter 5 (numeric) does not match that when preparing the plan (integer)
CONTEXT: SQL statement "select pg_typeof(r.a)" CONTEXT: SQL statement "select pg_typeof(r.a)"
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
-- --
-- These tests logically belong in plpgsql_record.sql, and perhaps someday -- These tests logically belong in plpgsql_record.sql, and perhaps someday
-- can be merged back into it. For now, however, their results are different -- can be merged back into it. For now, however, their results are different
-- depending on debug_invalidate_system_caches_always, so we must have two -- depending on debug_discard_caches, so we must have two expected-output
-- expected-output files to cover both cases. To minimize the maintenance -- files to cover both cases. To minimize the maintenance effort resulting
-- effort resulting from that, this file should contain only tests that -- from that, this file should contain only tests that do have different
-- do have different results under debug_invalidate_system_caches_always. -- results under debug_discard_caches.
-- --
-- check behavior with changes of a named rowtype -- check behavior with changes of a named rowtype
create table c_mutable(f1 int, f2 text); create table c_mutable(f1 int, f2 text);
...@@ -21,7 +21,7 @@ select c_sillyaddone(42); ...@@ -21,7 +21,7 @@ select c_sillyaddone(42);
alter table c_mutable drop column f1; alter table c_mutable drop column f1;
alter table c_mutable add column f1 float8; alter table c_mutable add column f1 float8;
-- currently, this fails due to cached plan for "r.f1 + 1" expression -- currently, this fails due to cached plan for "r.f1 + 1" expression
-- (but if debug_invalidate_system_caches_always is on, it will succeed) -- (but if debug_discard_caches is on, it will succeed)
select c_sillyaddone(42); select c_sillyaddone(42);
c_sillyaddone c_sillyaddone
--------------- ---------------
...@@ -55,7 +55,7 @@ select show_result_type('select 1 as a'); ...@@ -55,7 +55,7 @@ select show_result_type('select 1 as a');
(1 row) (1 row)
-- currently this fails due to cached plan for pg_typeof expression -- currently this fails due to cached plan for pg_typeof expression
-- (but if debug_invalidate_system_caches_always is on, it will succeed) -- (but if debug_discard_caches is on, it will succeed)
select show_result_type('select 2.0 as a'); select show_result_type('select 2.0 as a');
show_result_type show_result_type
------------------------ ------------------------
......
...@@ -426,7 +426,7 @@ select getf1(row(1,2)); ...@@ -426,7 +426,7 @@ select getf1(row(1,2));
1 1
(1 row) (1 row)
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select getf1(row(1,2)::two_int8s); select getf1(row(1,2)::two_int8s);
...@@ -507,7 +507,7 @@ select sillyaddone(42); ...@@ -507,7 +507,7 @@ select sillyaddone(42);
-- test for change of type of column f1 should be here someday; -- test for change of type of column f1 should be here someday;
-- for now see plpgsql_cache test -- for now see plpgsql_cache test
alter table mutable drop column f1; alter table mutable drop column f1;
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select sillyaddone(42); -- fail select sillyaddone(42); -- fail
...@@ -527,7 +527,7 @@ select getf3(null::mutable); -- now it works ...@@ -527,7 +527,7 @@ select getf3(null::mutable); -- now it works
(1 row) (1 row)
alter table mutable drop column f3; alter table mutable drop column f3;
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select getf3(null::mutable); -- fails again select getf3(null::mutable); -- fails again
...@@ -552,7 +552,7 @@ select sillyaddtwo(42); ...@@ -552,7 +552,7 @@ select sillyaddtwo(42);
(1 row) (1 row)
drop table mutable2; drop table mutable2;
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select sillyaddtwo(42); -- fail select sillyaddtwo(42); -- fail
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
-- --
-- These tests logically belong in plpgsql_record.sql, and perhaps someday -- These tests logically belong in plpgsql_record.sql, and perhaps someday
-- can be merged back into it. For now, however, their results are different -- can be merged back into it. For now, however, their results are different
-- depending on debug_invalidate_system_caches_always, so we must have two -- depending on debug_discard_caches, so we must have two expected-output
-- expected-output files to cover both cases. To minimize the maintenance -- files to cover both cases. To minimize the maintenance effort resulting
-- effort resulting from that, this file should contain only tests that -- from that, this file should contain only tests that do have different
-- do have different results under debug_invalidate_system_caches_always. -- results under debug_discard_caches.
-- --
-- check behavior with changes of a named rowtype -- check behavior with changes of a named rowtype
...@@ -20,7 +20,7 @@ alter table c_mutable drop column f1; ...@@ -20,7 +20,7 @@ alter table c_mutable drop column f1;
alter table c_mutable add column f1 float8; alter table c_mutable add column f1 float8;
-- currently, this fails due to cached plan for "r.f1 + 1" expression -- currently, this fails due to cached plan for "r.f1 + 1" expression
-- (but if debug_invalidate_system_caches_always is on, it will succeed) -- (but if debug_discard_caches is on, it will succeed)
select c_sillyaddone(42); select c_sillyaddone(42);
-- but it's OK if we force plan rebuilding -- but it's OK if we force plan rebuilding
...@@ -42,7 +42,7 @@ $$; ...@@ -42,7 +42,7 @@ $$;
select show_result_type('select 1 as a'); select show_result_type('select 1 as a');
-- currently this fails due to cached plan for pg_typeof expression -- currently this fails due to cached plan for pg_typeof expression
-- (but if debug_invalidate_system_caches_always is on, it will succeed) -- (but if debug_discard_caches is on, it will succeed)
select show_result_type('select 2.0 as a'); select show_result_type('select 2.0 as a');
-- but it's OK if we force plan rebuilding -- but it's OK if we force plan rebuilding
......
...@@ -257,7 +257,7 @@ create function getf1(x record) returns int language plpgsql as ...@@ -257,7 +257,7 @@ create function getf1(x record) returns int language plpgsql as
$$ begin return x.f1; end $$; $$ begin return x.f1; end $$;
select getf1(1); select getf1(1);
select getf1(row(1,2)); select getf1(row(1,2));
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select getf1(row(1,2)::two_int8s); select getf1(row(1,2)::two_int8s);
...@@ -316,7 +316,7 @@ select sillyaddone(42); ...@@ -316,7 +316,7 @@ select sillyaddone(42);
-- for now see plpgsql_cache test -- for now see plpgsql_cache test
alter table mutable drop column f1; alter table mutable drop column f1;
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select sillyaddone(42); -- fail select sillyaddone(42); -- fail
...@@ -328,7 +328,7 @@ select getf3(null::mutable); -- doesn't work yet ...@@ -328,7 +328,7 @@ select getf3(null::mutable); -- doesn't work yet
alter table mutable add column f3 int; alter table mutable add column f3 int;
select getf3(null::mutable); -- now it works select getf3(null::mutable); -- now it works
alter table mutable drop column f3; alter table mutable drop column f3;
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select getf3(null::mutable); -- fails again select getf3(null::mutable); -- fails again
...@@ -346,7 +346,7 @@ select sillyaddtwo(42); -- fail ...@@ -346,7 +346,7 @@ select sillyaddtwo(42); -- fail
create table mutable2(f1 int, f2 text); create table mutable2(f1 int, f2 text);
select sillyaddtwo(42); select sillyaddtwo(42);
drop table mutable2; drop table mutable2;
-- the context stack is different when debug_invalidate_system_caches_always -- the context stack is different when debug_discard_caches
-- is set, so suppress context output -- is set, so suppress context output
\set SHOW_CONTEXT never \set SHOW_CONTEXT never
select sillyaddtwo(42); -- fail select sillyaddtwo(42); -- fail
......
...@@ -38,6 +38,6 @@ step s4c { COMMIT; } ...@@ -38,6 +38,6 @@ step s4c { COMMIT; }
# The expected output for this test assumes that isolationtester will # The expected output for this test assumes that isolationtester will
# detect step s1b as waiting before the deadlock detector runs and # detect step s1b as waiting before the deadlock detector runs and
# releases s1 from its blocked state. To ensure that happens even in # releases s1 from its blocked state. To ensure that happens even in
# very slow (CLOBBER_CACHE_ALWAYS) cases, apply a (*) annotation. # very slow (debug_discard_caches) cases, apply a (*) annotation.
permutation s1a s2a s2b s3a s4a s1b(*) s1c s2c s3c s4c permutation s1a s2a s2b s3a s4a s1b(*) s1c s2c s3c s4c
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment