From 52043bf7f062c4294ace813ff05f0dff868fe79a Mon Sep 17 00:00:00 2001 From: reshke kirill Date: Sun, 25 Aug 2024 11:39:17 +0000 Subject: [PATCH] Fix pg_upgrade version parsing --- src/bin/pg_upgrade/exec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bin/pg_upgrade/exec.c b/src/bin/pg_upgrade/exec.c index cf8ade0d9c6..7c7a8732f78 100644 --- a/src/bin/pg_upgrade/exec.c +++ b/src/bin/pg_upgrade/exec.c @@ -33,7 +33,9 @@ static void get_bin_version(ClusterInfo *cluster) { char cmd[MAXPGPATH], - cmd_output[MAX_STRING]; + cmd_output[MAX_STRING], + dbstring[MAX_STRING]; + FILE *output; int v1 = 0, v2 = 0; @@ -47,9 +49,12 @@ get_bin_version(ClusterInfo *cluster) pclose(output); - if (sscanf(cmd_output, "%*s (Cloudberry Database) %d.%d", &v1, &v2) < 1) + if (sscanf(cmd_output, "%*s (%s Database) %d.%d", dbstring, &v1, &v2) < 1) pg_fatal("could not get pg_ctl version output from %s\n", cmd); + if (strcmp("Greenplum", dbstring) && strcmp("Cloudberry", dbstring)) + pg_fatal("could not upgrade from non Greenplum/Cloudberry version: %s\n", dbstring); + if (v1 < 10) { /* old style, e.g. 9.6.1 */