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 @@ -16807,7 +16807,7 @@ _ACEOF
16807
16807
# awk -F is a regex on some platforms, and not on others, so make "." a tab
16808
16808
PG_VERSION_NUM=" ` echo " $PACKAGE_VERSION " | sed ' s/[A-Za-z].*$//' |
16809
16809
tr ' .' ' ' |
16810
- $AWK ' {printf "%d%02d%02d ", $1, $2, (NF >= 3) ? $3 : 0 }' ` "
16810
+ $AWK ' {printf "%d%04d ", $1, $2}' ` "
16811
16811
16812
16812
cat >> confdefs.h << _ACEOF
16813
16813
#define PG_VERSION_NUM $PG_VERSION_NUM
Original file line number Diff line number Diff line change @@ -2181,7 +2181,7 @@ AC_DEFINE_UNQUOTED(PG_VERSION_STR,
2181
2181
# awk -F is a regex on some platforms, and not on others, so make "." a tab
2182
2182
[PG_VERSION_NUM="`echo "$PACKAGE_VERSION" | sed 's/[A-Za-z].*$//' |
2183
2183
tr '.' ' ' |
2184
- $AWK '{printf "%d%02d%02d ", $1, $2, (NF >= 3) ? $3 : 0 }'`"]
2184
+ $AWK '{printf "%d%04d ", $1, $2}'`"]
2185
2185
AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number])
2186
2186
AC_SUBST(PG_VERSION_NUM)
2187
2187
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