-$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.3 2010/07/09 16:51:23 momjian Exp $
 
 The most effective way to test pg_upgrade, aside from testing on user
 data, is by upgrading the PostgreSQL regression database.
     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.
         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
 
  * 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.14 2010/07/09 16:51:23 momjian Exp $
  */
 
 #include "pg_upgrade.h"
 
        if (nbytes < 0)
        {
+           int save_errno = errno;
+           
            if (buffer != NULL)
                free(buffer);
 
            if (dest_fd != 0)
                close(dest_fd);
 
+           errno = save_errno;
            return -1;
        }
 
        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);
            if (dest_fd != 0)
                close(dest_fd);
 
+           errno = save_errno;
            return -1;
        }
    }