Win32 tablespace

Started by Andreas Pflugalmost 22 years ago24 messagespatches
Jump to latest
#1Andreas Pflug
pgadmin@pse-consulting.de

The attached patch implements a symlink for win32 using junctions, and
uses that for win32 tablespaces.

Regards,
Andreas

Attachments:

tblspc.difftext/x-patch; name=tblspc.diffDownload+115-0
#2Bruce Momjian
bruce@momjian.us
In reply to: Andreas Pflug (#1)
Re: Win32 tablespace

Andreas Pflug wrote:

The attached patch implements a symlink for win32 using junctions, and
uses that for win32 tablespaces.

Wow, that's, uh, amazing!

-- 
  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
#3Andreas Pflug
pgadmin@pse-consulting.de
In reply to: Bruce Momjian (#2)
Re: Win32 tablespace

Bruce Momjian wrote:

Andreas Pflug wrote:

The attached patch implements a symlink for win32 using junctions, and
uses that for win32 tablespaces.

Wow, that's, uh, amazing!

http://www.codeproject.com/w2k/junctionpoints.asp has a good description
of the obfuscated REPARSE_DATA_BUFFER which is included in my vc6
installation, but not sufficiently documented.

Regards,
Andreas

#4Dave Page
dpage@pgadmin.org
In reply to: Andreas Pflug (#3)
Re: Win32 tablespace

-----Original Message-----
From: pgsql-patches-owner@postgresql.org
[mailto:pgsql-patches-owner@postgresql.org] On Behalf Of Andreas Pflug
Sent: 05 August 2004 20:23
To: Bruce Momjian
Cc: PostgreSQL Patches
Subject: Re: [PATCHES] Win32 tablespace

Bruce Momjian wrote:

Andreas Pflug wrote:

The attached patch implements a symlink for win32 using

junctions, and

uses that for win32 tablespaces.

Wow, that's, uh, amazing!

http://www.codeproject.com/w2k/junctionpoints.asp has a good
description of the obfuscated REPARSE_DATA_BUFFER which is
included in my vc6 installation, but not sufficiently documented.

I concur with Bruce - nice work. This is obviously win2k+ only though -
until now we've tried to support NT4 as well, although it seems that we
can't get initdb to work as we'd like in the installer on that platform.
Should we officially support 2K+ only?

Regards, Dave.

#5Dave Page
dpage@pgadmin.org
In reply to: Dave Page (#4)
Re: Win32 tablespace

-----Original Message-----
From: Andreas Pflug [mailto:pgadmin@pse-consulting.de]
Sent: 06 August 2004 11:07
To: Dave Page
Cc: Bruce Momjian; PostgreSQL Patches
Subject: Re: [PATCHES] Win32 tablespace

Since NT4 isn't supported by M$ for quite some time now, it
seems reasonable to mark it as "does run with issues, but not
officially supported". The installer would have to skip
initdb, and display a lengthy read-carefully-readme how to
continue manually.

Ahh, one of those things none of us read :-)

/D

#6Andreas Pflug
pgadmin@pse-consulting.de
In reply to: Dave Page (#4)
Re: Win32 tablespace

Dave Page wrote:

This is obviously win2k+ only though -

There's a chance it might work on NT4 with >=SP4, because AFAIR the
updated NTFS driver already understands the W2K format.

until now we've tried to support NT4 as well, although it seems that we
can't get initdb to work as we'd like in the installer on that platform.
Should we officially support 2K+ only?

Since NT4 isn't supported by M$ for quite some time now, it seems
reasonable to mark it as "does run with issues, but not officially
supported". The installer would have to skip initdb, and display a
lengthy read-carefully-readme how to continue manually.

Regards,
Andreas

#7Bruce Momjian
bruce@momjian.us
In reply to: Andreas Pflug (#1)
Re: Win32 tablespace

OK, applied. I moved the funciton into port/dirmod.c and cleaned up the
interface for Win32.

Would someone test this on Win32 in case I broke something? Patch
attached.

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

Andreas Pflug wrote:

The attached patch implements a symlink for win32 using junctions, and
uses that for win32 tablespaces.

Regards,
Andreas

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

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

Attachments:

/bjm/difftext/plainDownload+145-32
#8Andreas Pflug
pgadmin@pse-consulting.de
In reply to: Bruce Momjian (#7)
Re: Win32 tablespace

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned up the
interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace must
use rmdir, not unlink to remove the junction; see my original patch.

Regards,
Andreas

Attachments:

dirmod.patchtext/x-patch; name=dirmod.patchDownload+5-2
#9Bruce Momjian
bruce@momjian.us
In reply to: Andreas Pflug (#8)
Re: Win32 tablespace

OK, got them all. Thanks. Patch attached.

Would someone retest on Win32?

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

Andreas Pflug wrote:

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned up the
interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace must
use rmdir, not unlink to remove the junction; see my original patch.

Regards,
Andreas

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

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

Attachments:

/bjm/difftext/plainDownload+28-16
#10Mark Kirkwood
mark.kirkwood@catalyst.net.nz
In reply to: Bruce Momjian (#9)
Re: Win32 tablespace

I get a build failure (win 2000 pro):

gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations
zic.o ialloc.o scheck.o localtime.o -L../../src/port -lpgport -lwsock32 -lm
-lws2_32 -o zic.exe
../../src/port/libpgport.a(dirmod.o)(.text+0xc6):dirmod.c: undefined reference
to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0xe4):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0xf2):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x11d):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x12b):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x1c3):dirmod.c: undefined reference
to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0x1e1):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x1f1):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x21c):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x22c):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x459):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x4aa):dirmod.c: undefined reference
to `errmsg'
../../src/port/libpgport.a(dirmod.o)(.text+0x4b4):dirmod.c: undefined reference
to `errcode_for_file_access'
../../src/port/libpgport.a(dirmod.o)(.text+0x4bc):dirmod.c: undefined reference
to `errfinish'
../../src/port/libpgport.a(dirmod.o)(.text+0x51a):dirmod.c: undefined reference
to `pfree'
../../src/port/libpgport.a(dirmod.o)(.text+0x5ea):dirmod.c: undefined reference
to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x5f2):dirmod.c: undefined reference
to `MemoryContextAlloc'
../../src/port/libpgport.a(dirmod.o)(.text+0x64d):dirmod.c: undefined reference
to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x656):dirmod.c: undefined reference
to `MemoryContextStrdup'
../../src/port/libpgport.a(dirmod.o)(.text+0x50a):dirmod.c: undefined reference
to `pfree'
make[2]: *** [zic] Error 1
make[2]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src/timezone'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src'
make: *** [all] Error 2

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

Show quoted text

OK, got them all. Thanks. Patch attached.

Would someone retest on Win32?

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

Andreas Pflug wrote:

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned up the
interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace must
use rmdir, not unlink to remove the junction; see my original patch.

Regards,
Andreas

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--
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
#11Bruce Momjian
bruce@momjian.us
In reply to: Mark Kirkwood (#10)
Re: Win32 tablespace

OK, I have just applied a patch to src/timezone/Makefile which will fix
this by compiling dirmod.c specially like we do in other Makefiles.

Patch attached.

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

markir@coretech.co.nz wrote:

I get a build failure (win 2000 pro):

gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations
zic.o ialloc.o scheck.o localtime.o -L../../src/port -lpgport -lwsock32 -lm
-lws2_32 -o zic.exe
../../src/port/libpgport.a(dirmod.o)(.text+0xc6):dirmod.c: undefined reference
to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0xe4):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0xf2):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x11d):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x12b):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x1c3):dirmod.c: undefined reference
to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0x1e1):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x1f1):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x21c):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x22c):dirmod.c: undefined reference
to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x459):dirmod.c: undefined reference
to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x4aa):dirmod.c: undefined reference
to `errmsg'
../../src/port/libpgport.a(dirmod.o)(.text+0x4b4):dirmod.c: undefined reference
to `errcode_for_file_access'
../../src/port/libpgport.a(dirmod.o)(.text+0x4bc):dirmod.c: undefined reference
to `errfinish'
../../src/port/libpgport.a(dirmod.o)(.text+0x51a):dirmod.c: undefined reference
to `pfree'
../../src/port/libpgport.a(dirmod.o)(.text+0x5ea):dirmod.c: undefined reference
to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x5f2):dirmod.c: undefined reference
to `MemoryContextAlloc'
../../src/port/libpgport.a(dirmod.o)(.text+0x64d):dirmod.c: undefined reference
to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x656):dirmod.c: undefined reference
to `MemoryContextStrdup'
../../src/port/libpgport.a(dirmod.o)(.text+0x50a):dirmod.c: undefined reference
to `pfree'
make[2]: *** [zic] Error 1
make[2]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src/timezone'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src'
make: *** [all] Error 2

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, got them all. Thanks. Patch attached.

Would someone retest on Win32?

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

Andreas Pflug wrote:

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned up the
interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace must
use rmdir, not unlink to remove the junction; see my original patch.

Regards,
Andreas

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

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

Attachments:

/bjm/difftext/plainDownload+7-4
#12Mark Kirkwood
mark.kirkwood@catalyst.net.nz
In reply to: Bruce Momjian (#11)
Re: Win32 tablespace

Unfortunately I am still seeing the same error - I can "fix" it by with this:

*** dirmod.c.orig	Sun Aug  8 17:14:48 2004
--- dirmod.c	Sun Aug  8 17:14:59 2004
***************
*** 15,20 ****
--- 15,21 ----
   *-------------------------------------------------------------------------
   */

+ #define FRONTEND
#ifndef FRONTEND
#include "postgres.h"
#else

However using the same patch *solely* on the (copied) src/timezone/dirmod.c does
*not* fix the issue - I wonder if the linker picking up dirmod.o from src/port
instead of src/timezone?

regards

Mark

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

Show quoted text

OK, I have just applied a patch to src/timezone/Makefile which will fix
this by compiling dirmod.c specially like we do in other Makefiles.

Patch attached.

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

markir@coretech.co.nz wrote:

I get a build failure (win 2000 pro):

gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes

-Wmissing-declarations

zic.o ialloc.o scheck.o localtime.o -L../../src/port -lpgport -lwsock32

-lm

-lws2_32 -o zic.exe
../../src/port/libpgport.a(dirmod.o)(.text+0xc6):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0xe4):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0xf2):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x11d):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x12b):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x1c3):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0x1e1):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x1f1):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x21c):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x22c):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x459):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x4aa):dirmod.c: undefined

reference

to `errmsg'
../../src/port/libpgport.a(dirmod.o)(.text+0x4b4):dirmod.c: undefined

reference

to `errcode_for_file_access'
../../src/port/libpgport.a(dirmod.o)(.text+0x4bc):dirmod.c: undefined

reference

to `errfinish'
../../src/port/libpgport.a(dirmod.o)(.text+0x51a):dirmod.c: undefined

reference

to `pfree'
../../src/port/libpgport.a(dirmod.o)(.text+0x5ea):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x5f2):dirmod.c: undefined

reference

to `MemoryContextAlloc'
../../src/port/libpgport.a(dirmod.o)(.text+0x64d):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x656):dirmod.c: undefined

reference

to `MemoryContextStrdup'
../../src/port/libpgport.a(dirmod.o)(.text+0x50a):dirmod.c: undefined

reference

to `pfree'
make[2]: *** [zic] Error 1
make[2]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src/timezone'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src'
make: *** [all] Error 2

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, got them all. Thanks. Patch attached.

Would someone retest on Win32?

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

Andreas Pflug wrote:

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned up

the

interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace must
use rmdir, not unlink to remove the junction; see my original patch.

Regards,
Andreas

---------------------------(end of

broadcast)---------------------------

TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to

majordomo@postgresql.org)

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

--
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
#13Bruce Momjian
bruce@momjian.us
In reply to: Mark Kirkwood (#12)
Re: Win32 tablespace

I just committed the final fix for zic and Claudio has compiled it so
please grab cvs head and give it a try.

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

markir@coretech.co.nz wrote:

Unfortunately I am still seeing the same error - I can "fix" it by with this:

*** dirmod.c.orig	Sun Aug  8 17:14:48 2004
--- dirmod.c	Sun Aug  8 17:14:59 2004
***************
*** 15,20 ****
--- 15,21 ----
*-------------------------------------------------------------------------
*/

+ #define FRONTEND
#ifndef FRONTEND
#include "postgres.h"
#else

However using the same patch *solely* on the (copied) src/timezone/dirmod.c does
*not* fix the issue - I wonder if the linker picking up dirmod.o from src/port
instead of src/timezone?

regards

Mark

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, I have just applied a patch to src/timezone/Makefile which will fix
this by compiling dirmod.c specially like we do in other Makefiles.

Patch attached.

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

markir@coretech.co.nz wrote:

I get a build failure (win 2000 pro):

gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes

-Wmissing-declarations

zic.o ialloc.o scheck.o localtime.o -L../../src/port -lpgport -lwsock32

-lm

-lws2_32 -o zic.exe
../../src/port/libpgport.a(dirmod.o)(.text+0xc6):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0xe4):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0xf2):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x11d):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x12b):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x1c3):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0x1e1):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x1f1):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x21c):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x22c):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x459):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x4aa):dirmod.c: undefined

reference

to `errmsg'
../../src/port/libpgport.a(dirmod.o)(.text+0x4b4):dirmod.c: undefined

reference

to `errcode_for_file_access'
../../src/port/libpgport.a(dirmod.o)(.text+0x4bc):dirmod.c: undefined

reference

to `errfinish'
../../src/port/libpgport.a(dirmod.o)(.text+0x51a):dirmod.c: undefined

reference

to `pfree'
../../src/port/libpgport.a(dirmod.o)(.text+0x5ea):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x5f2):dirmod.c: undefined

reference

to `MemoryContextAlloc'
../../src/port/libpgport.a(dirmod.o)(.text+0x64d):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x656):dirmod.c: undefined

reference

to `MemoryContextStrdup'
../../src/port/libpgport.a(dirmod.o)(.text+0x50a):dirmod.c: undefined

reference

to `pfree'
make[2]: *** [zic] Error 1
make[2]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src/timezone'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src'
make: *** [all] Error 2

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, got them all. Thanks. Patch attached.

Would someone retest on Win32?

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

Andreas Pflug wrote:

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned up

the

interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace must
use rmdir, not unlink to remove the junction; see my original patch.

Regards,
Andreas

---------------------------(end of

broadcast)---------------------------

TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to

majordomo@postgresql.org)

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

--
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
-- 
  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
#14Mark Kirkwood
mark.kirkwood@catalyst.net.nz
In reply to: Bruce Momjian (#13)
Re: Win32 tablespace

Hmmm...updated and tried to rebuild - I get the same error!

It looks like I have the latest src/timezone/Makefile (1.14)

The only thing I am doing that is a bit different perhaps is :

- on Freebsd performing cvs update -d -P
- followed by ./configure;make dist
- copy the archive to win2000 and build (msys 1.0.10, mingw 3.0.1-1)

regards

Mark

(I guess the next best thing for me to try is a *completely* fresh checkout...)

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

Show quoted text

I just committed the final fix for zic and Claudio has compiled it so
please grab cvs head and give it a try.

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

markir@coretech.co.nz wrote:

Unfortunately I am still seeing the same error - I can "fix" it by with

this:

*** dirmod.c.orig	Sun Aug  8 17:14:48 2004
--- dirmod.c	Sun Aug  8 17:14:59 2004
***************
*** 15,20 ****
--- 15,21 ----

*-------------------------------------------------------------------------

*/

+ #define FRONTEND
#ifndef FRONTEND
#include "postgres.h"
#else

However using the same patch *solely* on the (copied) src/timezone/dirmod.c

does

*not* fix the issue - I wonder if the linker picking up dirmod.o from

src/port

instead of src/timezone?

regards

Mark

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, I have just applied a patch to src/timezone/Makefile which will fix
this by compiling dirmod.c specially like we do in other Makefiles.

Patch attached.

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

markir@coretech.co.nz wrote:

I get a build failure (win 2000 pro):

gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes

-Wmissing-declarations

zic.o ialloc.o scheck.o localtime.o -L../../src/port -lpgport

-lwsock32

-lm

-lws2_32 -o zic.exe
../../src/port/libpgport.a(dirmod.o)(.text+0xc6):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0xe4):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0xf2):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x11d):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x12b):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x1c3):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0x1e1):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x1f1):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x21c):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x22c):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x459):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x4aa):dirmod.c: undefined

reference

to `errmsg'
../../src/port/libpgport.a(dirmod.o)(.text+0x4b4):dirmod.c: undefined

reference

to `errcode_for_file_access'
../../src/port/libpgport.a(dirmod.o)(.text+0x4bc):dirmod.c: undefined

reference

to `errfinish'
../../src/port/libpgport.a(dirmod.o)(.text+0x51a):dirmod.c: undefined

reference

to `pfree'
../../src/port/libpgport.a(dirmod.o)(.text+0x5ea):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x5f2):dirmod.c: undefined

reference

to `MemoryContextAlloc'
../../src/port/libpgport.a(dirmod.o)(.text+0x64d):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x656):dirmod.c: undefined

reference

to `MemoryContextStrdup'
../../src/port/libpgport.a(dirmod.o)(.text+0x50a):dirmod.c: undefined

reference

to `pfree'
make[2]: *** [zic] Error 1
make[2]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src/timezone'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src'
make: *** [all] Error 2

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, got them all. Thanks. Patch attached.

Would someone retest on Win32?

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

Andreas Pflug wrote:

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned

up

the

interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace

must

use rmdir, not unlink to remove the junction; see my original

patch.

Regards,
Andreas

---------------------------(end of

broadcast)---------------------------

TIP 2: you can get off all lists at once with the unregister

command

(send "unregister YourEmailAddressHere" to

majordomo@postgresql.org)

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

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

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

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

#15Bruce Momjian
bruce@momjian.us
In reply to: Mark Kirkwood (#14)
Re: Win32 tablespace

Nope, you need Makefile 1.15. Must be a lag.

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

markir@coretech.co.nz wrote:

Hmmm...updated and tried to rebuild - I get the same error!

It looks like I have the latest src/timezone/Makefile (1.14)

The only thing I am doing that is a bit different perhaps is :

- on Freebsd performing cvs update -d -P
- followed by ./configure;make dist
- copy the archive to win2000 and build (msys 1.0.10, mingw 3.0.1-1)

regards

Mark

(I guess the next best thing for me to try is a *completely* fresh checkout...)

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

I just committed the final fix for zic and Claudio has compiled it so
please grab cvs head and give it a try.

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

markir@coretech.co.nz wrote:

Unfortunately I am still seeing the same error - I can "fix" it by with

this:

*** dirmod.c.orig	Sun Aug  8 17:14:48 2004
--- dirmod.c	Sun Aug  8 17:14:59 2004
***************
*** 15,20 ****
--- 15,21 ----

*-------------------------------------------------------------------------

*/

+ #define FRONTEND
#ifndef FRONTEND
#include "postgres.h"
#else

However using the same patch *solely* on the (copied) src/timezone/dirmod.c

does

*not* fix the issue - I wonder if the linker picking up dirmod.o from

src/port

instead of src/timezone?

regards

Mark

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, I have just applied a patch to src/timezone/Makefile which will fix
this by compiling dirmod.c specially like we do in other Makefiles.

Patch attached.

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

markir@coretech.co.nz wrote:

I get a build failure (win 2000 pro):

gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes

-Wmissing-declarations

zic.o ialloc.o scheck.o localtime.o -L../../src/port -lpgport

-lwsock32

-lm

-lws2_32 -o zic.exe
../../src/port/libpgport.a(dirmod.o)(.text+0xc6):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0xe4):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0xf2):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x11d):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x12b):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x1c3):dirmod.c: undefined

reference

to `pgwin32_backend_usleep'
../../src/port/libpgport.a(dirmod.o)(.text+0x1e1):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x1f1):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x21c):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x22c):dirmod.c: undefined

reference

to `elog_finish'
../../src/port/libpgport.a(dirmod.o)(.text+0x459):dirmod.c: undefined

reference

to `errstart'
../../src/port/libpgport.a(dirmod.o)(.text+0x4aa):dirmod.c: undefined

reference

to `errmsg'
../../src/port/libpgport.a(dirmod.o)(.text+0x4b4):dirmod.c: undefined

reference

to `errcode_for_file_access'
../../src/port/libpgport.a(dirmod.o)(.text+0x4bc):dirmod.c: undefined

reference

to `errfinish'
../../src/port/libpgport.a(dirmod.o)(.text+0x51a):dirmod.c: undefined

reference

to `pfree'
../../src/port/libpgport.a(dirmod.o)(.text+0x5ea):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x5f2):dirmod.c: undefined

reference

to `MemoryContextAlloc'
../../src/port/libpgport.a(dirmod.o)(.text+0x64d):dirmod.c: undefined

reference

to `_imp__CurrentMemoryContext'
../../src/port/libpgport.a(dirmod.o)(.text+0x656):dirmod.c: undefined

reference

to `MemoryContextStrdup'
../../src/port/libpgport.a(dirmod.o)(.text+0x50a):dirmod.c: undefined

reference

to `pfree'
make[2]: *** [zic] Error 1
make[2]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src/timezone'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/Administrator/develop/c/postgresql-8.0devel/src'
make: *** [all] Error 2

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

OK, got them all. Thanks. Patch attached.

Would someone retest on Win32?

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

Andreas Pflug wrote:

Bruce Momjian wrote:

OK, applied. I moved the funciton into port/dirmod.c and cleaned

up

the

interface for Win32.

Would someone test this on Win32 in case I broke something?

Yes, something's broken, see patch.

Second, HAVE_SYMLINK must be defined somewhere (configure?).

Third, a junction is a directory, not a file, so DROP tablespace

must

use rmdir, not unlink to remove the junction; see my original

patch.

Regards,
Andreas

---------------------------(end of

broadcast)---------------------------

TIP 2: you can get off all lists at once with the unregister

command

(send "unregister YourEmailAddressHere" to

majordomo@postgresql.org)

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

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

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

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match

-- 
  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
#16Mark Kirkwood
mark.kirkwood@catalyst.net.nz
In reply to: Bruce Momjian (#15)
Re: Win32 tablespace

It was, next update got it! Of course I found the src/utils issue then....

However, with the patch for that applied I can confirm a successful build!
(create/drop tablespace works too)

regards

Mark

Quoting Bruce Momjian <pgman@candle.pha.pa.us>:

Show quoted text

Nope, you need Makefile 1.15. Must be a lag.

#17Mark Kirkwood
mark.kirkwood@catalyst.net.nz
In reply to: Mark Kirkwood (#16)
Re: Win32 tablespace

Interesting,

After repeating 'make distclean;./configure --without-zlib' I have a
pg_config.h *with* HAVE_SYMLINK=1.

(To cover all the bases, adding in zlib support still results in HAVE_SYMLINK=1
for me)

At this point, sleeping seems quite attractive...

regards

Mark

Quoting Andreas Pflug <pgadmin@pse-consulting.de>:

Show quoted text

markir@coretech.co.nz wrote:

(create/drop tablespace works too)

I can *not* confirm this; after configure; make clean; make; make
install I got "tablespace not supported". pg_config.h lacks HAVE_SYMLINK=1.

Regards,
Andreas

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

#18Andreas Pflug
pgadmin@pse-consulting.de
In reply to: Mark Kirkwood (#16)
Re: Win32 tablespace

markir@coretech.co.nz wrote:

(create/drop tablespace works too)

I can *not* confirm this; after configure; make clean; make; make
install I got "tablespace not supported". pg_config.h lacks HAVE_SYMLINK=1.

Regards,
Andreas

#19Bruce Momjian
bruce@momjian.us
In reply to: Mark Kirkwood (#17)
Re: Win32 tablespace

markir@coretech.co.nz wrote:

Interesting,

After repeating 'make distclean;./configure --without-zlib' I have a
pg_config.h *with* HAVE_SYMLINK=1.

Right, symlinks are supported in Win32 now.

-- 
  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
#20Bruce Momjian
bruce@momjian.us
In reply to: Mark Kirkwood (#16)
Re: Win32 tablespace

markir@coretech.co.nz wrote:

It was, next update got it! Of course I found the src/utils issue then....

However, with the patch for that applied I can confirm a successful build!

What patch is that?

-- 
  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
#21Bruce Momjian
bruce@momjian.us
In reply to: Andreas Pflug (#18)
#22Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#21)
#23Andreas Pflug
pgadmin@pse-consulting.de
In reply to: Mark Kirkwood (#17)
#24Mark Kirkwood
mark.kirkwood@catalyst.net.nz
In reply to: Bruce Momjian (#20)