From 24e2d4b6ba99985d5b710983714f0133e94dc343 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Sun, 3 Jul 2011 13:15:58 +0200 Subject: [PATCH] Mark pg_stat_reset_shared as strict This is the proper fix for bug #6082 about pg_stat_reset_shared(NULL) causing a crash, and it reverts commit 79aa44536f3980d324f486504cde643ce23bf5c6 on head. The workaround of throwing an error from inside the function is left on backbranches (including 9.1) since this change requires a new initdb. --- src/backend/utils/adt/pgstatfuncs.c | 14 +++----------- src/include/catalog/catversion.h | 2 +- src/include/catalog/pg_proc.h | 2 +- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 4d07bdd24b..12dbff4c9a 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -1537,17 +1537,9 @@ pg_stat_reset(PG_FUNCTION_ARGS) Datum pg_stat_reset_shared(PG_FUNCTION_ARGS) { - if (PG_ARGISNULL(0)) - /* - * Same error message as in pgstat_reset_shared_counters(), - * to keep translations the same. - */ - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("unrecognized reset target: \"%s\"", "null"), - errhint("Target must be \"bgwriter\"."))); - - pgstat_reset_shared_counters(text_to_cstring(PG_GETARG_TEXT_PP(0))); + char *target = text_to_cstring(PG_GETARG_TEXT_PP(0)); + + pgstat_reset_shared_counters(target); PG_RETURN_VOID(); } diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index d826b5d31c..34e30aa1d4 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 201106211 +#define CATALOG_VERSION_NO 201107031 #endif diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index 6980d3e531..16dc70f6fa 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -2663,7 +2663,7 @@ DATA(insert OID = 2230 ( pg_stat_clear_snapshot PGNSP PGUID 12 1 0 0 0 f f f f DESCR("statistics: discard current transaction's statistics snapshot"); DATA(insert OID = 2274 ( pg_stat_reset PGNSP PGUID 12 1 0 0 0 f f f f f v 0 0 2278 "" _null_ _null_ _null_ _null_ pg_stat_reset _null_ _null_ _null_ )); DESCR("statistics: reset collected statistics for current database"); -DATA(insert OID = 3775 ( pg_stat_reset_shared PGNSP PGUID 12 1 0 0 0 f f f f f v 1 0 2278 "25" _null_ _null_ _null_ _null_ pg_stat_reset_shared _null_ _null_ _null_ )); +DATA(insert OID = 3775 ( pg_stat_reset_shared PGNSP PGUID 12 1 0 0 0 f f f t f v 1 0 2278 "25" _null_ _null_ _null_ _null_ pg_stat_reset_shared _null_ _null_ _null_ )); DESCR("statistics: reset collected statistics shared across the cluster"); DATA(insert OID = 3776 ( pg_stat_reset_single_table_counters PGNSP PGUID 12 1 0 0 0 f f f f f v 1 0 2278 "26" _null_ _null_ _null_ _null_ pg_stat_reset_single_table_counters _null_ _null_ _null_ )); DESCR("statistics: reset collected statistics for a single table or index in the current database"); -- 2.11.0