diff --git a/contrib/pg_upgrade/page.c b/contrib/pg_upgrade/page.c index c76d049631..d11d227fa9 100644 --- a/contrib/pg_upgrade/page.c +++ b/contrib/pg_upgrade/page.c @@ -17,7 +17,7 @@ #ifdef PAGE_CONVERSION -static const char *getPageVersion( +static void getPageVersion( uint16 *version, const char *pathName); static pageCnvCtx *loadConverterPlugin( uint16 newPageVersion, uint16 oldPageVersion); @@ -33,13 +33,9 @@ static pageCnvCtx *loadConverterPlugin( * to the new format. If the versions are identical, this function just * returns a NULL pageCnvCtx pointer to indicate that page-by-page conversion * is not required. - * - * If successful this function sets *result and returns NULL. If an error - * occurs, this function returns an error message in the form of an null-terminated - * string. */ -const char * -setupPageConverter(pageCnvCtx **result) +pageCnvCtx * +setupPageConverter(void) { uint16 oldPageVersion; uint16 newPageVersion; @@ -53,35 +49,28 @@ setupPageConverter(pageCnvCtx **result) snprintf(srcName, sizeof(srcName), "%s/global/%u", old_cluster.pgdata, old_cluster.pg_database_oid); - if ((msg = getPageVersion(&oldPageVersion, srcName)) != NULL) - return msg; - - if ((msg = getPageVersion(&newPageVersion, dstName)) != NULL) - return msg; + getPageVersion(&oldPageVersion, srcName); + getPageVersion(&newPageVersion, dstName); /* * If the old cluster and new cluster use the same page layouts, then we * don't need a page converter. */ - if (newPageVersion == oldPageVersion) + if (newPageVersion != oldPageVersion) { - *result = NULL; - return NULL; + /* + * The clusters use differing page layouts, see if we can find a plugin + * that knows how to convert from the old page layout to the new page + * layout. + */ + + if ((converter = loadConverterPlugin(newPageVersion, oldPageVersion)) == NULL) + pg_log(PG_FATAL, "could not find plugin to convert from old page layout to new page layout\n"); + + return converter; } - - /* - * The clusters use differing page layouts, see if we can find a plugin - * that knows how to convert from the old page layout to the new page - * layout. - */ - - if ((converter = loadConverterPlugin(newPageVersion, oldPageVersion)) == NULL) - return "could not find plugin to convert from old page layout to new page layout"; else - { - *result = converter; return NULL; - } } @@ -94,7 +83,7 @@ setupPageConverter(pageCnvCtx **result) * if an error occurs, this function returns an error message (in the form * of a null-terminated string). */ -static const char * +static void getPageVersion(uint16 *version, const char *pathName) { int relfd; @@ -102,19 +91,16 @@ getPageVersion(uint16 *version, const char *pathName) ssize_t bytesRead; if ((relfd = open(pathName, O_RDONLY, 0)) < 0) - return "could not open relation"; + pg_log(PG_FATAL, "could not open relation %s\n", pathName); if ((bytesRead = read(relfd, &page, sizeof(page))) != sizeof(page)) - { - close(relfd); - return "could not read page header"; - } + pg_log(PG_FATAL, "could not read page header of %s\n", pathName); *version = PageGetPageLayoutVersion(&page); close(relfd); - return NULL; + return; } diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h index 914c72ffe6..c1a2f532e7 100644 --- a/contrib/pg_upgrade/pg_upgrade.h +++ b/contrib/pg_upgrade/pg_upgrade.h @@ -359,7 +359,7 @@ typedef struct pluginShutdown shutdown; /* Pointer to plugin's shutdown function */ } pageCnvCtx; -const char *setupPageConverter(pageCnvCtx **result); +const pageCnvCtx *setupPageConverter(void); #else /* dummy */ typedef void *pageCnvCtx; @@ -398,7 +398,7 @@ void get_sock_dir(ClusterInfo *cluster, bool live_check); /* relfilenode.c */ void get_pg_database_relfilenode(ClusterInfo *cluster); -const char *transfer_all_new_dbs(DbInfoArr *olddb_arr, +void transfer_all_new_dbs(DbInfoArr *olddb_arr, DbInfoArr *newdb_arr, char *old_pgdata, char *new_pgdata); diff --git a/contrib/pg_upgrade/relfilenode.c b/contrib/pg_upgrade/relfilenode.c index b114352bc5..9d0d5a0917 100644 --- a/contrib/pg_upgrade/relfilenode.c +++ b/contrib/pg_upgrade/relfilenode.c @@ -27,13 +27,12 @@ static void transfer_relfile(pageCnvCtx *pageConverter, FileNameMap *map, * Responsible for upgrading all database. invokes routines to generate mappings and then * physically link the databases. */ -const char * +void transfer_all_new_dbs(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr, char *old_pgdata, char *new_pgdata) { int old_dbnum, new_dbnum; - const char *msg = NULL; pg_log(PG_REPORT, "%s user relation files\n", user_opts.transfer_mode == TRANSFER_MODE_LINK ? "Linking" : "Copying"); @@ -74,7 +73,7 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr, print_maps(mappings, n_maps, new_db->db_name); #ifdef PAGE_CONVERSION - msg = setupPageConverter(&pageConverter); + pageConverter = setupPageConverter(); #endif transfer_single_new_db(pageConverter, mappings, n_maps); @@ -85,7 +84,7 @@ transfer_all_new_dbs(DbInfoArr *old_db_arr, end_progress_output(); check_ok(); - return msg; + return; }