From: | Noah Misch <noah(at)leadboat(dot)com> |
---|---|
To: | Bruce Momjian <bruce(at)momjian(dot)us> |
Cc: | manu(at)coopapotheken(dot)be, pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #13774: upgrade from 9.1 to 9.4 'succeeds' without enough disk space |
Date: | 2015-11-18 04:43:34 |
Message-ID: | 20151118044334.GA1410299@tornado.leadboat.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Fri, Nov 13, 2015 at 08:24:02PM -0500, Bruce Momjian wrote:
> Thank you for the report. This is embarrassing, but the code was
> testing for the wrong return value on Windows. We used a macro to
> define the same symbol on Windows and Unix (pg_copy_file)
> *** a/src/bin/pg_upgrade/file.c
> --- b/src/bin/pg_upgrade/file.c
> *************** copyAndUpdateFile(pageCnvCtx *pageConver
> *** 34,40 ****
> {
> if (pageConverter == NULL)
> {
> ! if (pg_copy_file(src, dst, force) == -1)
> return getErrorText(errno);
> else
> return NULL;
> --- 34,44 ----
> {
> if (pageConverter == NULL)
> {
> ! #ifndef WIN32
> ! if (copy_file(src, dst, force) == -1)
> ! #else
> ! if (CopyFile(src, dst, force) == 0)
> ! #endif
> return getErrorText(errno);
Thanks. This passage of code has at least two other problems on Windows. The
third CopyFile() argument means the opposite of the third copy_file()
argument. Next, getErrorText() is wrong on Windows:
const char *
getErrorText(int errNum)
{
#ifdef WIN32
_dosmaperr(GetLastError());
#endif
return pg_strdup(strerror(errNum));
}
Calling _dosmaperr() to set errno is futile, because we nonetheless proceed to
use the passed-in errNum.
From | Date | Subject | |
---|---|---|---|
Next Message | Sandeep Thakkar | 2015-11-18 06:51:11 | Re: BUG #13763: Failed to re-install Posgresql 9.1 |
Previous Message | John R Pierce | 2015-11-17 20:04:29 | Re: BUG #13777: FKs began to no longer treat referential integrity, ie, it was as if the FKs did not exist. |