]> granicus.if.org Git - postgresql/commitdiff
Properly report errno/out-of-disk-space error from pg_upgrade when in
authorBruce Momjian <bruce@momjian.us>
Fri, 9 Jul 2010 16:51:29 +0000 (16:51 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 9 Jul 2010 16:51:29 +0000 (16:51 +0000)
copy mode, per report from depstein@alliedtesting.com.

Patch suggestion from Magnus.

Backpatch to 9.0.X.

contrib/pg_upgrade/TESTING
contrib/pg_upgrade/file.c

index ca771fefddbeb7966edd9f5fdba3a47fb15a5980..9646697f1034012eac838662d63f02d82139aff0 100644 (file)
@@ -1,4 +1,4 @@
-$PostgreSQL: pgsql/contrib/pg_upgrade/TESTING,v 1.2 2010/07/03 14:23:13 momjian Exp $
+$PostgreSQL: pgsql/contrib/pg_upgrade/TESTING,v 1.2.2.1 2010/07/09 16:51:29 momjian Exp $
 
 The most effective way to test pg_upgrade, aside from testing on user
 data, is by upgrading the PostgreSQL regression database.
@@ -22,11 +22,6 @@ Here are the steps needed to create a regression database dump file:
     a)  Change CREATE FUNCTION shared object paths to use '$libdir'
         The old and new cluster will have different shared object paths.
 
-    b)  Remove 'regex_flavor' (not supported in Postgres 9.0)
-
-    c)  Change CREATE OR REPLACE LANGUAGE to CREATE LANGUAGE
-        The former syntax is only supported in Postgres 9.0.
-
     d)  Perform the load/dump twice
         This fixes problems with the ordering of COPY columns for
         inherited tables.
@@ -35,7 +30,11 @@ Here are the steps needed to create a regression database dump file:
         Commands like CREATE TRIGGER and ALTER TABLE sometimes have
         differences.
 
-    f)  Adjust extra_float_digits
+    c)  For pre-9.0, change CREATE OR REPLACE LANGUAGE to CREATE LANGUAGE
+
+    b)  For pre-9.0, remove 'regex_flavor'
+
+    f)  For pre-9.0, adjust extra_float_digits
        Postgres 9.0 pg_dump uses extra_float_digits=-2 for pre-9.0
        databases, and extra_float_digits=-3 for >= 9.0 databases.
        It is necessary to modify 9.0 pg_dump to always use -3, and
index 7ddaddafd68f0a1d0a8554e4500969df3eb2a607..e55ca2c7fa5d41fd06958e145b72dc3af6446926 100644 (file)
@@ -4,7 +4,7 @@
  *     file system operations
  *
  *     Copyright (c) 2010, PostgreSQL Global Development Group
- *     $PostgreSQL: pgsql/contrib/pg_upgrade/file.c,v 1.13 2010/07/06 19:18:55 momjian Exp $
+ *     $PostgreSQL: pgsql/contrib/pg_upgrade/file.c,v 1.13.2.1 2010/07/09 16:51:29 momjian Exp $
  */
 
 #include "pg_upgrade.h"
@@ -170,6 +170,8 @@ copy_file(const char *srcfile, const char *dstfile, bool force)
 
                if (nbytes < 0)
                {
+                       int save_errno = errno;
+                       
                        if (buffer != NULL)
                                free(buffer);
 
@@ -179,6 +181,7 @@ copy_file(const char *srcfile, const char *dstfile, bool force)
                        if (dest_fd != 0)
                                close(dest_fd);
 
+                       errno = save_errno;
                        return -1;
                }
 
@@ -190,8 +193,7 @@ copy_file(const char *srcfile, const char *dstfile, bool force)
                if (write(dest_fd, buffer, nbytes) != nbytes)
                {
                        /* if write didn't set errno, assume problem is no disk space */
-                       if (errno == 0)
-                               errno = ENOSPC;
+                       int save_errno = errno ? errno : ENOSPC;
 
                        if (buffer != NULL)
                                free(buffer);
@@ -202,6 +204,7 @@ copy_file(const char *srcfile, const char *dstfile, bool force)
                        if (dest_fd != 0)
                                close(dest_fd);
 
+                       errno = save_errno;
                        return -1;
                }
        }