File tree 4 files changed +29
-16
lines changed
4 files changed +29
-16
lines changed Original file line number Diff line number Diff line change @@ -16749,7 +16749,7 @@ _ACEOF
16749
16749
# awk -F is a regex on some platforms, and not on others, so make "." a tab
16750
16750
PG_VERSION_NUM=" ` echo " $PACKAGE_VERSION " | sed ' s/[A-Za-z].*$//' |
16751
16751
tr ' .' ' ' |
16752
- $AWK ' {printf "%d%02d%02d ", $1, $2, (NF >= 3) ? $3 : 0 }' ` "
16752
+ $AWK ' {printf "%d%04d ", $1, $2}' ` "
16753
16753
16754
16754
cat >> confdefs.h << _ACEOF
16755
16755
#define PG_VERSION_NUM $PG_VERSION_NUM
Original file line number Diff line number Diff line change @@ -2193,7 +2193,7 @@ AC_DEFINE_UNQUOTED(PG_VERSION_STR,
2193
2193
# awk -F is a regex on some platforms, and not on others, so make "." a tab
2194
2194
[PG_VERSION_NUM="`echo "$PACKAGE_VERSION" | sed 's/[A-Za-z].*$//' |
2195
2195
tr '.' ' ' |
2196
- $AWK '{printf "%d%02d%02d ", $1, $2, (NF >= 3) ? $3 : 0 }'`"]
2196
+ $AWK '{printf "%d%04d ", $1, $2}'`"]
2197
2197
AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number])
2198
2198
AC_SUBST(PG_VERSION_NUM)
2199
2199
Original file line number Diff line number Diff line change @@ -26,16 +26,16 @@ static int win32_check_directory_write_permissions(void);
26
26
/*
27
27
* get_bin_version
28
28
*
29
- * Fetch versions of binaries for cluster.
29
+ * Fetch major version of binaries for cluster.
30
30
*/
31
31
static void
32
32
get_bin_version (ClusterInfo * cluster )
33
33
{
34
34
char cmd [MAXPGPATH ],
35
35
cmd_output [MAX_STRING ];
36
36
FILE * output ;
37
- int pre_dot = 0 ,
38
- post_dot = 0 ;
37
+ int v1 = 0 ,
38
+ v2 = 0 ;
39
39
40
40
snprintf (cmd , sizeof (cmd ), "\"%s/pg_ctl\" --version" , cluster -> bindir );
41
41
@@ -46,14 +46,19 @@ get_bin_version(ClusterInfo *cluster)
46
46
47
47
pclose (output );
48
48
49
- /* Remove trailing newline */
50
- if (strchr (cmd_output , '\n' ) != NULL )
51
- * strchr (cmd_output , '\n' ) = '\0' ;
52
-
53
- if (sscanf (cmd_output , "%*s %*s %d.%d" , & pre_dot , & post_dot ) < 1 )
49
+ if (sscanf (cmd_output , "%*s %*s %d.%d" , & v1 , & v2 ) < 1 )
54
50
pg_fatal ("could not get pg_ctl version output from %s\n" , cmd );
55
51
56
- cluster -> bin_version = (pre_dot * 100 + post_dot ) * 100 ;
52
+ if (v1 < 10 )
53
+ {
54
+ /* old style, e.g. 9.6.1 */
55
+ cluster -> bin_version = v1 * 10000 + v2 * 100 ;
56
+ }
57
+ else
58
+ {
59
+ /* new style, e.g. 10.1 */
60
+ cluster -> bin_version = v1 * 10000 ;
61
+ }
57
62
}
58
63
59
64
Original file line number Diff line number Diff line change @@ -156,22 +156,30 @@ get_major_server_version(ClusterInfo *cluster)
156
156
{
157
157
FILE * version_fd ;
158
158
char ver_filename [MAXPGPATH ];
159
- int integer_version = 0 ;
160
- int fractional_version = 0 ;
159
+ int v1 = 0 ,
160
+ v2 = 0 ;
161
161
162
162
snprintf (ver_filename , sizeof (ver_filename ), "%s/PG_VERSION" ,
163
163
cluster -> pgdata );
164
164
if ((version_fd = fopen (ver_filename , "r" )) == NULL )
165
165
pg_fatal ("could not open version file: %s\n" , ver_filename );
166
166
167
167
if (fscanf (version_fd , "%63s" , cluster -> major_version_str ) == 0 ||
168
- sscanf (cluster -> major_version_str , "%d.%d" , & integer_version ,
169
- & fractional_version ) < 1 )
168
+ sscanf (cluster -> major_version_str , "%d.%d" , & v1 , & v2 ) < 1 )
170
169
pg_fatal ("could not parse PG_VERSION file from %s\n" , cluster -> pgdata );
171
170
172
171
fclose (version_fd );
173
172
174
- return (100 * integer_version + fractional_version ) * 100 ;
173
+ if (v1 < 10 )
174
+ {
175
+ /* old style, e.g. 9.6.1 */
176
+ return v1 * 10000 + v2 * 100 ;
177
+ }
178
+ else
179
+ {
180
+ /* new style, e.g. 10.1 */
181
+ return v1 * 10000 ;
182
+ }
175
183
}
176
184
177
185
You can’t perform that action at this time.
0 commit comments