I posted the attached patch 4 days ago, with the comment
"The attached patch will redefine unlink and rename only if FRONTEND is not defined.".

I still believe this a good way to fix it.

Tom Lane wrote:

To put that in a more positive light: we like to think that our code is
Posix-compliant and runs in a Posix-compliant environment.  We're not
thrilled about introducing non-Posix-isms for the convenience of one
platform ... especially if there's no easy way to enforce that the
nonstandard coding convention be used.

Back on track: if rename() does exist under Windows then my idea is
unreliable.  Any other thoughts?  How about #including <io.h> in port.h
(for Windows only of course) before we #define these things?

Probably won't work, because pgrename and rename do not have the same definition/linkage.

Index: port.h
RCS file: /projects/cvsroot/pgsql-server/src/include/port.h,v
retrieving revision 1.52
diff -u -r1.52 port.h
--- port.h	12 Aug 2004 18:32:43 -0000	1.52
+++ port.h	13 Aug 2004 15:58:19 -0000
@@ -141,7 +141,7 @@
 extern int pclose_check(FILE *stream);
-#if defined(WIN32) || defined(__CYGWIN__)
+#if (defined(WIN32) || defined(__CYGWIN__)) && !defined(FRONTEND)
  *	Win32 doesn't have reliable rename/unlink during concurrent access,
  *	and we need special code to do symlinks.
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to