Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Bruce Momjian
Martijn van Oosterhout wrote:
-- Start of PGP signed section.
 On Sun, Jan 28, 2007 at 02:05:41PM +0100, Magnus Hagander wrote:
  Anyway. We hard-code thread-safety to on for Win32, because win32 is a
  threaded platform in general - almost everything can be exposed to
  threading even if they don't want it. For example a VB program that has
  no threading at all can still run with multiple threads because of the
  framework.
 
 It'd be nice if we could do the same for some Unix platofrms like
 Linux. The C library uses threads internally, and there's no actual
 downside to enabling thread safety there, except removing a few failure
 modes.

I was not aware this was true on Linux.

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

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

   http://archives.postgresql.org


Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Douglas McNaught
Bruce Momjian [EMAIL PROTECTED] writes:

 Martijn van Oosterhout wrote:

 It'd be nice if we could do the same for some Unix platofrms like
 Linux. The C library uses threads internally, and there's no actual
 downside to enabling thread safety there, except removing a few failure
 modes.

 I was not aware this was true on Linux.

It uses threads at least for the POSIX AIO calls--I'm not sure what
else.

-Doug

---(end of broadcast)---
TIP 1: 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


Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Tom Lane
Douglas McNaught [EMAIL PROTECTED] writes:
 Bruce Momjian [EMAIL PROTECTED] writes:
 Martijn van Oosterhout wrote:
 It'd be nice if we could do the same for some Unix platofrms like
 Linux. The C library uses threads internally, and there's no actual
 downside to enabling thread safety there, except removing a few failure
 modes.
 
 I was not aware this was true on Linux.

 It uses threads at least for the POSIX AIO calls--I'm not sure what
 else.

I think the real point is that you get the same C library whether you
ask for thread safety or not, and it does internal locking to protect
itself against multi threads anyway.  So arguably there's no point in
building a thread-unsafe version of libpq.

But having said that, 99.99% of Linux use is based on pre-built RPMs,
and the RPM packagers all understand how to make this decision, so
it's really not our problem to fix.

regards, tom lane

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Gregory Stark
Douglas McNaught [EMAIL PROTECTED] writes:

 It uses threads at least for the POSIX AIO calls--I'm not sure what
 else.

On that tangent, is that still true or is it only for older kernels that it's
true? I was under the impression newer kernels implemented the aio interface
but others seem to think it's not the case and glibc still emulates it with
threads. Looking up the truth of the situation has been on my mental todo list
for a while.

-- 
  Gregory Stark
  EnterpriseDB  http://www.enterprisedb.com

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Martijn van Oosterhout
On Mon, Feb 05, 2007 at 11:09:06AM -0500, Tom Lane wrote:
 I think the real point is that you get the same C library whether you
 ask for thread safety or not, and it does internal locking to protect
 itself against multi threads anyway.  So arguably there's no point in
 building a thread-unsafe version of libpq.

The underlying issue is that there is no way to be sure a program will
not have threads. Just because you didn't compile against pthreads,
don't mean there won't be any threads. An example being a
gethostbyname() that loads a threaded version of an LDAP library, for
example.

For programs it doesn't matter, but for shared-libraries you never know
whether you're going to be called from the main thread of execution or
not, and if you're not you're buggered.

 But having said that, 99.99% of Linux use is based on pre-built RPMs,
 and the RPM packagers all understand how to make this decision, so
 it's really not our problem to fix.

That's true, but I think it would be worthwhile to invert the switch to
be --disable-thread-safety, since the number of people who don't
understand the problem far outweigh the cost of the switch.

Have a nice day,
-- 
Martijn van Oosterhout   kleptog@svana.org   http://svana.org/kleptog/
 From each according to his ability. To each according to his ability to 
 litigate.


signature.asc
Description: Digital signature


Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Tom Lane
Martijn van Oosterhout kleptog@svana.org writes:
 That's true, but I think it would be worthwhile to invert the switch to
 be --disable-thread-safety, since the number of people who don't
 understand the problem far outweigh the cost of the switch.

I'd vote against that unless it were done only for Linux, and personally
I think a platform-dependent default for this might be unreasonably
confusing.

regards, tom lane

---(end of broadcast)---
TIP 1: 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


Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Martijn van Oosterhout
On Mon, Feb 05, 2007 at 11:34:23AM -0500, Tom Lane wrote:
 Martijn van Oosterhout kleptog@svana.org writes:
  That's true, but I think it would be worthwhile to invert the switch to
  be --disable-thread-safety, since the number of people who don't
  understand the problem far outweigh the cost of the switch.
 
 I'd vote against that unless it were done only for Linux, and personally
 I think a platform-dependent default for this might be unreasonably
 confusing.

Well, it's already platform specific, Win32 removes the option
altogether (apparently). Which would be another option.

However, it only trips people up occasionally, so I'm not going to push
it.

Have a nice day,
-- 
Martijn van Oosterhout   kleptog@svana.org   http://svana.org/kleptog/
 From each according to his ability. To each according to his ability to 
 litigate.


signature.asc
Description: Digital signature


Re: [HACKERS] VC2005 build and pthreads

2007-02-05 Thread Magnus Hagander
Martijn van Oosterhout wrote:
 On Mon, Feb 05, 2007 at 11:34:23AM -0500, Tom Lane wrote:
 Martijn van Oosterhout kleptog@svana.org writes:
 That's true, but I think it would be worthwhile to invert the switch to
 be --disable-thread-safety, since the number of people who don't
 understand the problem far outweigh the cost of the switch.
 I'd vote against that unless it were done only for Linux, and personally
 I think a platform-dependent default for this might be unreasonably
 confusing.
 
 Well, it's already platform specific, Win32 removes the option
 altogether (apparently). Which would be another option.

Visual C build only, not the MingW build. It still has the option. The
win32 binary distribution sets it though.

//Magnus

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


Re: [HACKERS] VC2005 build and pthreads

2007-02-04 Thread Martijn van Oosterhout
On Sun, Jan 28, 2007 at 02:05:41PM +0100, Magnus Hagander wrote:
 Anyway. We hard-code thread-safety to on for Win32, because win32 is a
 threaded platform in general - almost everything can be exposed to
 threading even if they don't want it. For example a VB program that has
 no threading at all can still run with multiple threads because of the
 framework.

It'd be nice if we could do the same for some Unix platofrms like
Linux. The C library uses threads internally, and there's no actual
downside to enabling thread safety there, except removing a few failure
modes.

Have a nice day,
-- 
Martijn van Oosterhout   kleptog@svana.org   http://svana.org/kleptog/
 From each according to his ability. To each according to his ability to 
 litigate.


signature.asc
Description: Digital signature


Re: [HACKERS] VC2005 build and pthreads

2007-01-28 Thread Joachim Wieland
On Fri, Jan 26, 2007 at 10:10:20PM +0100, Magnus Hagander wrote:
  I would like to build pg on VC2005. How do I use pthreads that is
  mentioned in the README file. Do I need the DLL? Sources? LIB?
  Where do I install or copy them..

  Err, pthreads is a threads library for Unix, I don't think Windows has
  that, nor can I think of a situation where you'd need to worry about
  threads anyway?

 There is a pthreads for win32 as well.
 However, you don't need it to build, unless you build ecpg. I forgot to
 update the README when I put that patch in .-)

Actually you can build ecpg without pthreads as well, but you lose
thread-safety. The problem is that ecpg and libpq do different things on
Windows if you define ENABLE_THREAD_SAFETY.

ENABLE_THREAD_SAFETY is set to 1 in pg_config.h.win32, with it being
defined, ecpg needs the pthreads libraries, while libpq uses the stub
functions from pthread-win32.c. Libpq can do that because it doesn't use
pthread_(get|set)specific. If we implemented those functions by means of the
native Windows API as well, they could also be used by ecpg and we would not
need the pthread libs on Windows anymore.

Magnus, can we? ;-)


Joachim



---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [HACKERS] VC2005 build and pthreads

2007-01-28 Thread Magnus Hagander
Joachim Wieland wrote:
 On Fri, Jan 26, 2007 at 10:10:20PM +0100, Magnus Hagander wrote:
 I would like to build pg on VC2005. How do I use pthreads that is
 mentioned in the README file. Do I need the DLL? Sources? LIB?
 Where do I install or copy them..
 
 Err, pthreads is a threads library for Unix, I don't think Windows has
 that, nor can I think of a situation where you'd need to worry about
 threads anyway?
 
 There is a pthreads for win32 as well.
 However, you don't need it to build, unless you build ecpg. I forgot to
 update the README when I put that patch in .-)
 
 Actually you can build ecpg without pthreads as well, but you lose
 thread-safety. The problem is that ecpg and libpq do different things on
 Windows if you define ENABLE_THREAD_SAFETY.
 
 ENABLE_THREAD_SAFETY is set to 1 in pg_config.h.win32, with it being
 defined, ecpg needs the pthreads libraries, while libpq uses the stub
 functions from pthread-win32.c. Libpq can do that because it doesn't use
 pthread_(get|set)specific. If we implemented those functions by means of the
 native Windows API as well, they could also be used by ecpg and we would not
 need the pthread libs on Windows anymore.
 
 Magnus, can we? ;-)

Absolutely, I'll be happy to test your patch :)

Anyway. We hard-code thread-safety to on for Win32, because win32 is a
threaded platform in general - almost everything can be exposed to
threading even if they don't want it. For example a VB program that has
no threading at all can still run with multiple threads because of the
framework.

//Magnus

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


Re: [HACKERS] VC2005 build and pthreads

2007-01-26 Thread Martijn van Oosterhout
On Fri, Jan 26, 2007 at 09:34:10PM +0100, Gevik Babakhani wrote:
 Folks,
 
 I would like to build pg on VC2005. How do I use pthreads that is
 mentioned in the README file. Do I need the DLL? Sources? LIB?
 Where do I install or copy them..

Err, pthreads is a threads library for Unix, I don't think Windows has
that, nor can I think of a situation where you'd need to worry about
threads anyway?

Have a nice day.
-- 
Martijn van Oosterhout   kleptog@svana.org   http://svana.org/kleptog/
 From each according to his ability. To each according to his ability to 
 litigate.


signature.asc
Description: Digital signature


Re: [HACKERS] VC2005 build and pthreads

2007-01-26 Thread Gevik Babakhani
pthreads in needed to buold PG in vc++ 2005
please read pgsql/src/tools/msvc/README

Have a nice day.

On Fri, 2007-01-26 at 21:47 +0100, Martijn van Oosterhout wrote:
 On Fri, Jan 26, 2007 at 09:34:10PM +0100, Gevik Babakhani wrote:
  Folks,
  
  I would like to build pg on VC2005. How do I use pthreads that is
  mentioned in the README file. Do I need the DLL? Sources? LIB?
  Where do I install or copy them..
 
 Err, pthreads is a threads library for Unix, I don't think Windows has
 that, nor can I think of a situation where you'd need to worry about
 threads anyway?
 
 Have a nice day.


---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


Re: [HACKERS] VC2005 build and pthreads

2007-01-26 Thread Magnus Hagander
Martijn van Oosterhout wrote:
 On Fri, Jan 26, 2007 at 09:34:10PM +0100, Gevik Babakhani wrote:
 Folks,

 I would like to build pg on VC2005. How do I use pthreads that is
 mentioned in the README file. Do I need the DLL? Sources? LIB?
 Where do I install or copy them..
 
 Err, pthreads is a threads library for Unix, I don't think Windows has
 that, nor can I think of a situation where you'd need to worry about
 threads anyway?

There is a pthreads for win32 as well.
However, you don't need it to build, unless you build ecpg. I forgot to
update the README when I put that patch in .-)

If you want it, it's on ftp://sources.redhat.com/pub/pthreads-win32.
IIRC, that's actually mentioned in the README file. You need the lib and
headers.

//Magnus

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