From 674c06d01c85ed600085321079dc337b7996613f Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Fri, 30 Oct 2020 14:42:58 +0900 Subject: [PATCH] Decouple extension version check from binary version Until now the extension version has always moved in lock-step with the binary version, but that doesn't always need to be the case, so make it possible to have an extension version which does not match the binary version. --- repmgr_version.h.in | 2 ++ repmgrd.c | 14 ++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/repmgr_version.h.in b/repmgr_version.h.in index dd5975d3..6fe4a0a8 100644 --- a/repmgr_version.h.in +++ b/repmgr_version.h.in @@ -1,5 +1,7 @@ #define REPMGR_VERSION_DATE "" #define REPMGR_VERSION "5.3dev" #define REPMGR_VERSION_NUM 50300 +#define REPMGR_EXTENSION_VERSION "5.2" +#define REPMGR_EXTENSION_NUM 50200 #define REPMGR_RELEASE_DATE "2021-XX-XX" #define PG_ACTUAL_VERSION_NUM diff --git a/repmgrd.c b/repmgrd.c index 6722cbec..ec185fe8 100644 --- a/repmgrd.c +++ b/repmgrd.c @@ -396,13 +396,14 @@ main(int argc, char **argv) * extension is the latest available according to "pg_available_extensions" - * - does our (major) version match that? */ - log_verbose(LOG_DEBUG, "binary version: %i; extension version: %i", - REPMGR_VERSION_NUM, extversions.installed_version_num); - if ((REPMGR_VERSION_NUM/100) < (extversions.installed_version_num / 100)) + log_verbose(LOG_DEBUG, "expected extension version: %i; extension version: %i", + REPMGR_EXTENSION_NUM, extversions.installed_version_num); + if ((REPMGR_EXTENSION_NUM/100) < (extversions.installed_version_num / 100)) { log_error(_("this \"repmgr\" version is older than the installed \"repmgr\" extension version")); - log_detail(_("\"repmgr\" version %s is installed but extension is version %s"), + log_detail(_("\"repmgr\" version %s providing extension version %s is installed but extension is version %s"), REPMGR_VERSION, + REPMGR_EXTENSION_VERSION, extversions.installed_version); log_hint(_("update the repmgr binaries to match the installed extension version")); @@ -410,11 +411,12 @@ main(int argc, char **argv) exit(ERR_BAD_CONFIG); } - if ((REPMGR_VERSION_NUM/100) > (extversions.installed_version_num / 100)) + if ((REPMGR_EXTENSION_NUM/100) > (extversions.installed_version_num / 100)) { log_error(_("this \"repmgr\" version is newer than the installed \"repmgr\" extension version")); - log_detail(_("\"repmgr\" version %s is installed but extension is version %s"), + log_detail(_("\"repmgr\" version %s providing extension version %s is installed but extension is version %s"), REPMGR_VERSION, + REPMGR_EXTENSION_VERSION, extversions.installed_version); log_hint(_("update the installed extension version by executing \"ALTER EXTENSION repmgr UPDATE\""));