pg_upgrade: Print OID using %u instead of %d
authorPeter Eisentraut <peter@eisentraut.org>
Mon, 12 Apr 2021 18:29:24 +0000 (20:29 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Mon, 12 Apr 2021 18:29:24 +0000 (20:29 +0200)
This could write wrong output into the cluster deletion script if a
database OID exceeds the signed 32-bit range.

src/bin/pg_upgrade/check.c

index d77183b8d124c25fdd7e9db94eb06be3d6438863..1c1c908664dea692eda0473c1ed02d6287c8d4e7 100644 (file)
@@ -600,7 +600,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
                        PATH_SEPARATOR);
 
            for (dbnum = 0; dbnum < old_cluster.dbarr.ndbs; dbnum++)
-               fprintf(script, RMDIR_CMD " %c%s%c%d%c\n", PATH_QUOTE,
+               fprintf(script, RMDIR_CMD " %c%s%c%u%c\n", PATH_QUOTE,
                        fix_path_separator(os_info.old_tablespaces[tblnum]),
                        PATH_SEPARATOR, old_cluster.dbarr.dbs[dbnum].db_oid,
                        PATH_QUOTE);