Mark pg_stat_reset_shared as strict
authorMagnus Hagander <[email protected]>
Sun, 3 Jul 2011 11:15:58 +0000 (13:15 +0200)
committerMagnus Hagander <[email protected]>
Sun, 3 Jul 2011 11:15:58 +0000 (13:15 +0200)
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
src/include/catalog/catversion.h
src/include/catalog/pg_proc.h

index 4d07bdd24bde7e5dbe4bcb26871bf894920b1c33..12dbff4c9a943b37875a76a92d36346c21f53372 100644 (file)
@@ -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();
 }
index d826b5d31cfd513e97a9517c0f7ecfd55ddaa9cc..34e30aa1d4de3e2005ca32c41aebeedbe399f160 100644 (file)
@@ -53,6 +53,6 @@
  */
 
 /*                         yyyymmddN */
-#define CATALOG_VERSION_NO 201106211
+#define CATALOG_VERSION_NO 201107031
 
 #endif
index 6980d3e531502cc463eee43fa2330ea515e5c556..16dc70f6fa34f711d712f32c96b79982419fb3d8 100644 (file)
@@ -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");