Re: [PATCHES] 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 [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
[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
[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
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
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
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
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
-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
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
-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