Re: [PATCHES] Win32 tablespace

2004-08-08 Thread markir
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 [EMAIL PROTECTED]:


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





---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [PATCHES] Win32 tablespace

2004-08-08 Thread Andreas Pflug
[EMAIL PROTECTED] 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


Re: [PATCHES] Win32 tablespace

2004-08-08 Thread Bruce Momjian
[EMAIL PROTECTED] 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
  [EMAIL PROTECTED]   |  (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 4: Don't 'kill -9' the postmaster


Re: [PATCHES] Win32 tablespace

2004-08-08 Thread Bruce Momjian
Andreas Pflug wrote:
 [EMAIL PROTECTED] 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.

I am confused.  We have something in configure that forces
HAVE_SYMLINK=1 if you are win32.  Would you try a 'gmake distclean'?  I
think that might fix it.

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (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 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [PATCHES] Win32 tablespace

2004-08-07 Thread Bruce Momjian

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 [EMAIL PROTECTED])

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073
Index: configure
===
RCS file: /cvsroot/pgsql-server/configure,v
retrieving revision 1.381
diff -c -c -r1.381 configure
*** configure   4 Aug 2004 21:33:34 -   1.381
--- configure   8 Aug 2004 00:45:33 -
***
*** 12060,12066 
  LIBOBJS=$LIBOBJS gettimeofday.$ac_objext
  LIBOBJS=$LIBOBJS kill.$ac_objext
  LIBOBJS=$LIBOBJS open.$ac_objext
! LIBOBJS=$LIBOBJS rand.$ac_objext ;;
  esac
  
  if test $with_readline = yes; then
--- 12060,12072 
  LIBOBJS=$LIBOBJS gettimeofday.$ac_objext
  LIBOBJS=$LIBOBJS kill.$ac_objext
  LIBOBJS=$LIBOBJS open.$ac_objext
! LIBOBJS=$LIBOBJS rand.$ac_objext
! 
! cat confdefs.h \_ACEOF
! #define HAVE_SYMLINK 1
! _ACEOF
! 
! ;;
  esac
  
  if test $with_readline = yes; then
Index: configure.in
===
RCS file: /cvsroot/pgsql-server/configure.in,v
retrieving revision 1.371
diff -c -c -r1.371 configure.in
*** configure.in4 Aug 2004 21:33:35 -   1.371
--- configure.in8 Aug 2004 00:45:37 -
***
*** 908,914 
  AC_LIBOBJ(gettimeofday)
  AC_LIBOBJ(kill)
  AC_LIBOBJ(open)
! AC_LIBOBJ(rand) ;;
  esac
  
  if test $with_readline = yes; then
--- 908,917 
  AC_LIBOBJ(gettimeofday)
  AC_LIBOBJ(kill)
  AC_LIBOBJ(open)
! AC_LIBOBJ(rand)
! AC_DEFINE([HAVE_SYMLINK], 1,
!   [Define to 1 if you have the `symlink' function.])
! ;;
  esac
  
  if test $with_readline = yes; then
Index: src/backend/commands/tablespace.c
===
RCS file: /cvsroot/pgsql-server/src/backend/commands/tablespace.c,v
retrieving revision 1.7
diff -c -c -r1.7 tablespace.c
*** src/backend/commands/tablespace.c   1 Aug 2004 20:30:48 -   1.7
--- src/backend/commands/tablespace.c   8 Aug 2004 00:45:44 -
***
*** 482,492 
--- 482,501 
 errmsg(could not unlink file \%s\: %m,
subfile)));
  
+ #ifndef WIN32
if (unlink(location)  0)
ereport(ERROR,
(errcode_for_file_access(),
 errmsg(could not unlink symbolic link \%s\: %m,
location)));
+ #else
+   /* The junction is a directory, not a file */
+   if (rmdir(location)  0)
+   ereport(ERROR,
+   (errcode_for_file_access(),
+errmsg(could not remove junction dir \%s\: %m,
+   location)));
+ #endif
  
pfree(subfile);
pfree(location);
Index: src/port/dirmod.c
===
RCS file: /cvsroot/pgsql-server/src/port/dirmod.c,v
retrieving revision 1.14
diff -c -c -r1.14 dirmod.c
*** src/port/dirmod.c   7 Aug 2004 21:48:09 -   1.14
--- src/port/dirmod.c   8 Aug 2004 00:45:52 -
***
*** 153,161 
  {
HANDLE dirhandle;
DWORD len;
-   char *p = nativeTarget;
char buffer[MAX_PATH*sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)];
char nativeTarget[MAX_PATH];
REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = 
(REPARSE_JUNCTION_DATA_BUFFER*)buffer;
  
CreateDirectory(newpath, 0);
--- 153,161 
  {
HANDLE dirhandle;
DWORD len;
char buffer[MAX_PATH*sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)];
char nativeTarget[MAX_PATH];
+   char *p = nativeTarget;
REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = 
(REPARSE_JUNCTION_DATA_BUFFER*)buffer;
  
CreateDirectory(newpath, 0);
***
*** 203,211 
  NULL, GetLastError(), 
 

Re: [PATCHES] Win32 tablespace

2004-08-07 Thread markir
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.cSun 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 [EMAIL PROTECTED]:


 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.

 ---

 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]:
  
   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
 [EMAIL PROTECTED])
  
   --
 Bruce Momjian|  http://candle.pha.pa.us
 [EMAIL PROTECTED]   |  (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
   [EMAIL PROTECTED]   |  (610) 359-1001
   +  If your life is a hard drive, |  13 Roberts Road
   +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073







Re: [PATCHES] Win32 tablespace

2004-08-07 Thread Bruce Momjian

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

---

[EMAIL PROTECTED] 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 [EMAIL PROTECTED]:
 
 
  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.
 
  ---
 
  [EMAIL PROTECTED] 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 [EMAIL PROTECTED]:
   
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
  [EMAIL PROTECTED])
   
--
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  

Re: [PATCHES] Win32 tablespace

2004-08-06 Thread Dave Page
 

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] 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.

---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [PATCHES] Win32 tablespace

2004-08-06 Thread Andreas Pflug
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
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faqs/FAQ.html


Re: [PATCHES] Win32 tablespace

2004-08-06 Thread Dave Page
 

 -Original Message-
 From: Andreas Pflug [mailto:[EMAIL PROTECTED] 
 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

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly