Thread: cygwin rename instead of link (7.2.2)

cygwin rename instead of link (7.2.2)

From
"Henshall, Stuart - WCP"
Date:

In the recently released 7.2.2 there is still the problem that this patch solved:
http://archives.postgresql.org/pgsql-cygwin/2002-05/msg00053.php
Here is a patch against 7.2.2 to resolve it:
*** src/backend/access/transam/xlog.c.orig      Fri Mar 15 19:20:42 2002
--- src/backend/access/transam/xlog.c   Mon Jun 09 13:05:26 2002
***************
** 1506,1512 ****
         * overwrite an existing logfile.  However, there shouldn't be one, so
         * rename() is an acceptable substitute except for the truly paranoid.
         */
! #ifndef __BEOS__
        if (link(tmppath, path) < 0)
                elog(STOP, "link from %s to %s (initialization of log file %u, segment %u) failed: %m",
                         tmppath, path, log, seg);
--- 1506,1512 ----
         * overwrite an existing logfile.  However, there shouldn't be one, so
         * rename() is an acceptable substitute except for the truly paranoid.
         */
! #if !defined(__BEOS__) && !defined(__CYGWIN__)
        if (link(tmppath, path) < 0)
                elog(STOP, "link from %s to %s (initialization of log file %u, segment %u) failed: %m",
                         tmppath, path, log, seg);

Re: cygwin rename instead of link (7.2.2)

From
Bruce Momjian
Date:
The fix will appear in 7.3:

    #if !defined(__BEOS__) && !defined(N_PLAT_NLM) && !defined(__CYGWIN__)
        if (link(tmppath, path) < 0)
            elog(PANIC, "link from %s to %s (initialization of log file %u, segment %u) failed: %m",
                 tmppath, path, log, seg);
        unlink(tmppath);

We could have back-patched this into 7.2.2, but one thought of it.  Sorry.

---------------------------------------------------------------------------

Henshall, Stuart - WCP wrote:
> In the recently released 7.2.2 there is still the problem that this patch
> solved:
> http://archives.postgresql.org/pgsql-cygwin/2002-05/msg00053.php
> Here is a patch against 7.2.2 to resolve it:
> *** src/backend/access/transam/xlog.c.orig    Fri Mar 15 19:20:42 2002
> --- src/backend/access/transam/xlog.c    Mon Jun 09 13:05:26 2002
> ***************
> ** 1506,1512 ****
>        * overwrite an existing logfile.  However, there shouldn't be one,
> so
>        * rename() is an acceptable substitute except for the truly
> paranoid.
>        */
> ! #ifndef __BEOS__
>       if (link(tmppath, path) < 0)
>           elog(STOP, "link from %s to %s (initialization of log file
> %u, segment %u) failed: %m",
>                tmppath, path, log, seg);
> --- 1506,1512 ----
>        * overwrite an existing logfile.  However, there shouldn't be one,
> so
>        * rename() is an acceptable substitute except for the truly
> paranoid.
>        */
> ! #if !defined(__BEOS__) && !defined(__CYGWIN__)
>       if (link(tmppath, path) < 0)
>           elog(STOP, "link from %s to %s (initialization of log file
> %u, segment %u) failed: %m",
>                tmppath, path, log, seg);

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073