Would someone check that I didn't break the Windows port with this
recent commit:

  Log Message:
  -----------
  Add WAL logging for CREATE/DROP DATABASE and CREATE/DROP TABLESPACE.
  Fix TablespaceCreateDbspace() to be able to create a dummy directory
  in place of a dropped tablespace's symlink.  This eliminates the open
  problem of a PANIC during WAL replay when a replayed action attempts
  to touch a file in a since-deleted tablespace.  It also makes for a
  significant improvement in the usability of PITR replay.

I had to do some fooling around with platform-specific code, so it's
possible that things are broken.  Please test that the above-mentioned
four commands still work.  Also see if they work when WAL-replayed.
(The easy way to check this is to do one and then "kill -9" the backend
as soon as it completes.)  One test case for the former PANIC bug is to
run the regression tests using "make installcheck", then immediately
start another backend and kill -9 it (you must do this before a
checkpoint occurs in order to exercise the bug case).

Some code I'm particularly worried about is in DROP TABLESPACE:

    /*
     * Okay, try to remove the symlink.  We must however deal with the
     * possibility that it's a directory instead of a symlink --- this
     * could happen during WAL replay (see TablespaceCreateDbspace),
     * and it is also the normal case on Windows.
     */
    if (lstat(location, &st) == 0 && S_ISDIR(st.st_mode))
    {
        if (rmdir(location) < 0)
            ereport(ERROR,
                    (errcode_for_file_access(),
                     errmsg("could not remove directory \"%s\": %m",
                            location)));
    }
    else
    {
        if (unlink(location) < 0)
            ereport(ERROR,
                    (errcode_for_file_access(),
                     errmsg("could not unlink symbolic link \"%s\": %m",
                            location)));
    }

Is there any reason lstat() wouldn't work on Windows?

			regards, tom lane

Sun, 29 Aug 2004 18:26:24 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Testing needed for recent tablespace hacking
Hmmm... not entirely sure if this is related - but I get a compile failure on
win2000 pro :

gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations
-L../../src/port -L/usr/local/lib  -o postgres.exe
-Wl,--base-file,postgres.base postgres.exp access/SUBSYS.o bootstrap/SUBSYS.o
catalog/SUBSYS.o parser/SUBSYS.o commands/SUBSYS.o executor/SUBSYS.o
lib/SUBSYS.o libpq/SUBSYS.o main/SUBSYS.o nodes/SUBSYS.o optimizer/SUBSYS.o
port/SUBSYS.o postmaster/SUBSYS.o regex/SUBSYS.o rewrite/SUBSYS.o
storage/SUBSYS.o tcop/SUBSYS.o utils/SUBSYS.o ../../src/timezone/SUBSYS.o
-lpgport -lz -lwsock32 -lm  -lws2_32
commands/SUBSYS.o(.text+0x2a827):tablespace.c: undefined reference to `slat'
make[2]: *** [postgres] Error 1
make[2]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0.0beta1/src/backend'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0.0beta1/src'
make: *** [all] Error 2

regards

Mark

Quoting Tom Lane <tgl@sss.pgh.pa.us>:

> Would someone check that I didn't break the Windows port with this
> recent commit:
>



Tue, 31 Aug 2004 19:22:01 +1200
markir@coretech.co.nz
Re: Testing needed for recent tablespace
Yep, related.  There was a typo in win32.h for lstat that was exposed by
the new tablespace changes.  I also added the proper parameters rather
than just redefining the symbol.

Attached is the patch.  Do we need to repackage beta2 for this?  Tom did
ask for Win32 testers two days ago and it is just being tested now.

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

markir@coretech.co.nz wrote:
> Hmmm... not entirely sure if this is related - but I get a compile failure on
> win2000 pro :
> 
> gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations
> -L../../src/port -L/usr/local/lib  -o postgres.exe
> -Wl,--base-file,postgres.base postgres.exp access/SUBSYS.o bootstrap/SUBSYS.o
> catalog/SUBSYS.o parser/SUBSYS.o commands/SUBSYS.o executor/SUBSYS.o
> lib/SUBSYS.o libpq/SUBSYS.o main/SUBSYS.o nodes/SUBSYS.o optimizer/SUBSYS.o
> port/SUBSYS.o postmaster/SUBSYS.o regex/SUBSYS.o rewrite/SUBSYS.o
> storage/SUBSYS.o tcop/SUBSYS.o utils/SUBSYS.o ../../src/timezone/SUBSYS.o
> -lpgport -lz -lwsock32 -lm  -lws2_32
> commands/SUBSYS.o(.text+0x2a827):tablespace.c: undefined reference to `slat'
> make[2]: *** [postgres] Error 1
> make[2]: Leaving directory
> `/home/Administrator/develop/c/postgresql-8.0.0beta1/src/backend'
> make[1]: *** [all] Error 2
> make[1]: Leaving directory
> `/home/Administrator/develop/c/postgresql-8.0.0beta1/src'
> make: *** [all] Error 2
> 
> regards
> 
> Mark
> 
> Quoting Tom Lane <tgl@sss.pgh.pa.us>:
> 
> > Would someone check that I didn't break the Windows port with this
> > recent commit:
> >
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faqs/FAQ.html
> 

-- 
  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

Index: win32.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/win32.h,v
retrieving revision 1.29
retrieving revision 1.31
diff -c -c -r1.29 -r1.31
*** win32.h	29 Aug 2004 05:06:57 -0000	1.29
--- win32.h	31 Aug 2004 11:29:56 -0000	1.31
***************
*** 206,212 ****
  /*
   * Supplement to <sys/stat.h>.
   */
! #define lstat slat
  
  /*
   * Supplement to <errno.h>.
--- 206,212 ----
  /*
   * Supplement to <sys/stat.h>.
   */
! #define lstat(path, sb)	stat((path), (sb))
  
  /*
   * Supplement to <errno.h>.
Tue, 31 Aug 2004 07:31:36 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: [pgsql-hackers-win32] Testing needed for recent tablespace
Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

>
> Yep, related.  There was a typo in win32.h for lstat that was exposed by
> the new tablespace changes.  I also added the proper parameters rather
> than just redefining the symbol.
>
> Attached is the patch.  Do we need to repackage beta2 for this?  Tom did
> ask for Win32 testers two days ago and it is just being tested now.
>
Apologies for the awful timing - cpu on my windows box died on Saturday, and
only got a replacement going yesterday (I know it sounds a bit like 'the dog
ate my homework'...)

regards

Mark


Wed,  1 Sep 2004 09:44:37 +1200
markir@coretech.co.nz
Re: [pgsql-hackers-win32] Testing needed for recent