@@ -877,30 +877,33 @@ do_backup(time_t start_time)
877
877
static void
878
878
check_server_version (void )
879
879
{
880
-
881
880
/* confirm server version */
882
881
server_version = PQserverVersion (backup_conn );
883
882
883
+ if (server_version == 0 )
884
+ elog (ERROR , "Unknown server version %d" , server_version );
885
+
886
+ if (server_version < 100000 )
887
+ sprintf (server_version_str , "%d.%d" ,
888
+ server_version / 10000 ,
889
+ (server_version / 100 ) % 100 );
890
+ else
891
+ sprintf (server_version_str , "%d" ,
892
+ server_version / 10000 );
893
+
884
894
if (server_version < 90500 )
885
895
elog (ERROR ,
886
- "server version is %d.%d.%d, must be %s or higher" ,
887
- server_version / 10000 ,
888
- (server_version / 100 ) % 100 ,
889
- server_version % 100 , "9.5" );
896
+ "server version is %s, must be %s or higher" ,
897
+ server_version_str , "9.5" );
890
898
891
899
if (from_replica && server_version < 90600 )
892
900
elog (ERROR ,
893
- "server version is %d.%d.%d, must be %s or higher for backup from replica" ,
894
- server_version / 10000 ,
895
- (server_version / 100 ) % 100 ,
896
- server_version % 100 , "9.6" );
901
+ "server version is %s, must be %s or higher for backup from replica" ,
902
+ server_version_str , "9.6" );
897
903
898
904
/* Do exclusive backup only for PostgreSQL 9.5 */
899
905
exclusive_backup = server_version < 90600 ||
900
906
current .backup_mode == BACKUP_MODE_DIFF_PTRACK ;
901
-
902
- /* Save server_version to use it in future */
903
- sprintf (server_version_str , "%d.%d" , server_version / 10000 , (server_version / 100 ) % 100 );
904
907
}
905
908
906
909
/*
@@ -2752,4 +2755,4 @@ pg_ptrack_get_block(backup_files_args *arguments,
2752
2755
pfree (params [3 ]);
2753
2756
2754
2757
return result ;
2755
- }
2758
+ }
0 commit comments