]> granicus.if.org Git - postgresql/commitdiff
Adjust a few pg_upgrade functions to return void.
authorBruce Momjian <bruce@momjian.us>
Thu, 3 Jan 2013 02:20:13 +0000 (21:20 -0500)
committerBruce Momjian <bruce@momjian.us>
Thu, 3 Jan 2013 02:20:20 +0000 (21:20 -0500)
Adjust pg_upgrade page conversion functions (which are not used) to
return void so transfer_all_new_dbs can return void.

contrib/pg_upgrade/page.c
contrib/pg_upgrade/pg_upgrade.h
contrib/pg_upgrade/relfilenode.c

index c76d049631ee62e7b56fce5ca3df2783a317446b..d11d227fa930fd9d958311e2cc7f688606220d78 100644 (file)
@@ -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.
-        */
+               /*
+                * 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");
 
-       if ((converter = loadConverterPlugin(newPageVersion, oldPageVersion)) == NULL)
-               return "could not find plugin to convert from old page layout to new page layout";
+               return converter;
+       }
        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;
 }
 
 
index 914c72ffe635aa89a9665dfb6969ad810a1f7fac..c1a2f532e71f8b783db1cbf1b4b82a9ed69e8a2a 100644 (file)
@@ -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);
 
 
index b114352bc5d28286edfac8888cd4dc9396dfa6ad..9d0d5a0917e4dc6abb049141777ed343eec4c00b 100644 (file)
@@ -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;
 }