@@ -877,30 +877,33 @@ do_backup(time_t start_time)
877877static void
878878check_server_version (void )
879879{
880-
881880 /* confirm server version */
882881 server_version = PQserverVersion (backup_conn );
883882
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+
884894 if (server_version < 90500 )
885895 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" );
890898
891899 if (from_replica && server_version < 90600 )
892900 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" );
897903
898904 /* Do exclusive backup only for PostgreSQL 9.5 */
899905 exclusive_backup = server_version < 90600 ||
900906 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 );
904907}
905908
906909/*
@@ -2752,4 +2755,4 @@ pg_ptrack_get_block(backup_files_args *arguments,
27522755 pfree (params [3 ]);
27532756
27542757 return result ;
2755- }
2758+ }
0 commit comments