diff options
Diffstat (limited to 'src/bin/pg_upgrade/server.c')
-rw-r--r-- | src/bin/pg_upgrade/server.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c index 3e3323a6e8a..a91f18916c7 100644 --- a/src/bin/pg_upgrade/server.c +++ b/src/bin/pg_upgrade/server.c @@ -156,8 +156,8 @@ get_major_server_version(ClusterInfo *cluster) { FILE *version_fd; char ver_filename[MAXPGPATH]; - int integer_version = 0; - int fractional_version = 0; + int v1 = 0, + v2 = 0; snprintf(ver_filename, sizeof(ver_filename), "%s/PG_VERSION", cluster->pgdata); @@ -165,13 +165,21 @@ get_major_server_version(ClusterInfo *cluster) pg_fatal("could not open version file: %s\n", ver_filename); if (fscanf(version_fd, "%63s", cluster->major_version_str) == 0 || - sscanf(cluster->major_version_str, "%d.%d", &integer_version, - &fractional_version) < 1) + sscanf(cluster->major_version_str, "%d.%d", &v1, &v2) < 1) pg_fatal("could not parse PG_VERSION file from %s\n", cluster->pgdata); fclose(version_fd); - return (100 * integer_version + fractional_version) * 100; + if (v1 < 10) + { + /* old style, e.g. 9.6.1 */ + return v1 * 10000 + v2 * 100; + } + else + { + /* new style, e.g. 10.1 */ + return v1 * 10000; + } } |