v9-0004-Create-a-helper-function-for-cleaning-up-from-do_.patch
application/octet-stream
Filename: v9-0004-Create-a-helper-function-for-cleaning-up-from-do_.patch
Type: application/octet-stream
Part: 3
Patch
Format: format-patch
Series: patch v9-0004
Subject: Create a helper function for cleaning up from do_analyze_rel().
| File | + | − |
|---|---|---|
| src/backend/commands/analyze.c | 26 | 0 |
From 4991912b680a20d309781c44f09fdaaefdbecaab Mon Sep 17 00:00:00 2001
From: Nathan Bossart <bossartn@amazon.com>
Date: Wed, 5 Sep 2018 14:43:44 +0000
Subject: [PATCH v9 4/7] Create a helper function for cleaning up from
do_analyze_rel().
---
src/backend/commands/analyze.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index dc73714819..26fa7bcd55 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -102,6 +102,9 @@ static void update_attstats(Oid relid, bool inh,
int natts, VacAttrStats **vacattrstats);
static Datum std_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull);
static Datum ind_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull);
+static void do_analyze_rel_cleanup(int save_nestlevel, Oid save_userid,
+ int save_sec_context, MemoryContext caller_context,
+ RangeVar *rangeVar, VacuumParams *params);
/*
@@ -695,6 +698,29 @@ do_analyze_rel(Relation onerel, int options, VacuumParams *params,
pg_rusage_show(&ru0))));
}
+ /* pass NULL for the RangeVar to avoid the SKIP LOCKED message */
+ do_analyze_rel_cleanup(save_nestlevel, save_userid, save_sec_context,
+ caller_context, NULL, params);
+}
+
+/*
+ * Convenience function for cleaning up before exiting do_analyze_rel().
+ *
+ * This also emits a "skipping analyze" log statement based on the rangeVar and
+ * params provided. If rangeVar is NULL, no such log statement will be emitted.
+ */
+static void
+do_analyze_rel_cleanup(int save_nestlevel, Oid save_userid, int save_sec_context,
+ MemoryContext caller_context, RangeVar *rangeVar, VacuumParams *params)
+{
+ int elevel = get_elevel_for_skipped_relation(rangeVar, params);
+
+ if (elevel != 0)
+ ereport(elevel,
+ (errcode(ERRCODE_LOCK_NOT_AVAILABLE),
+ errmsg("skipping analyze of \"%s\" --- lock not available",
+ rangeVar->relname)));
+
/* Roll back any GUC changes executed by index functions */
AtEOXact_GUC(false, save_nestlevel);
--
2.16.2