While trying to decipher this comment: /* * Do the old cluster's per-database directories share a directory * with a new version-specific tablespace? */
I noticed that the condition it's referring to if (strlen(old_cluster.tablespace_suffix) == 0) doesn't appear to have been reachable since support for upgrading from pre-9.2 was removed in v15 (commit e469f0a). Before then, this case seems to have only applied to upgrades from v8.4 or older versions. I'm planning to commit the attached patch shortly after I double-check that I'm not missing anything. -- nathan
>From 1e7961c6e256a6e37db3fcecac2400ca7d201630 Mon Sep 17 00:00:00 2001 From: Nathan Bossart <nat...@postgresql.org> Date: Mon, 17 Mar 2025 12:29:11 -0500 Subject: [PATCH v1 1/1] pg_upgrade: Remove some dead code. --- src/bin/pg_upgrade/check.c | 39 +++++++------------------------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c index 88db8869b6e..d32fc3d88ec 100644 --- a/src/bin/pg_upgrade/check.c +++ b/src/bin/pg_upgrade/check.c @@ -936,6 +936,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name) int tblnum; char old_cluster_pgdata[MAXPGPATH], new_cluster_pgdata[MAXPGPATH]; + char *old_tblspc_suffix; *deletion_script_file_name = psprintf("%sdelete_old_cluster.%s", SCRIPT_PREFIX, SCRIPT_EXT); @@ -1000,39 +1001,13 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name) fix_path_separator(old_cluster.pgdata), PATH_QUOTE); /* delete old cluster's alternate tablespaces */ + old_tblspc_suffix = pg_strdup(old_cluster.tablespace_suffix); + fix_path_separator(old_tblspc_suffix); for (tblnum = 0; tblnum < os_info.num_old_tablespaces; tblnum++) - { - /* - * Do the old cluster's per-database directories share a directory - * with a new version-specific tablespace? - */ - if (strlen(old_cluster.tablespace_suffix) == 0) - { - /* delete per-database directories */ - int dbnum; - - fprintf(script, "\n"); - - for (dbnum = 0; dbnum < old_cluster.dbarr.ndbs; dbnum++) - 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); - } - else - { - char *suffix_path = pg_strdup(old_cluster.tablespace_suffix); - - /* - * Simply delete the tablespace directory, which might be ".old" - * or a version-specific subdirectory. - */ - fprintf(script, RMDIR_CMD " %c%s%s%c\n", PATH_QUOTE, - fix_path_separator(os_info.old_tablespaces[tblnum]), - fix_path_separator(suffix_path), PATH_QUOTE); - pfree(suffix_path); - } - } + fprintf(script, RMDIR_CMD " %c%s%s%c\n", PATH_QUOTE, + fix_path_separator(os_info.old_tablespaces[tblnum]), + old_tblspc_suffix, PATH_QUOTE); + pfree(old_tblspc_suffix); fclose(script); -- 2.39.5 (Apple Git-154)