Re: pgstat: remove delayed destroy / pipe: - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: pgstat: remove delayed destroy / pipe:
Date
Msg-id 200605080220.k482KHS07451@candle.pha.pa.us
Whole thread Raw
In response to Re: pgstat: remove delayed destroy / pipe:  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
Patch applied to HEAD, 8.1.X and 8.0.X.

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

Bruce Momjian wrote:
> Magnus Hagander wrote:
> > > It turns out the problem is that port/pipe.c is compiled with
> > > -DFRONTEND and include/port/win32.h wraps the recv to
> > > pgwin32_recv macro in a #ifndef FRONTEND.  We've actually
> > > been using the WinSock recv function directly (verified with gcc -E).
> >
> > That's definitly wrong.
> > Looks like this file needs a _srv version in the Makefile.  Bruce?
>
> Wow!  That is disturbing.  I tried to minimize the affect of FRONTEND,
> but obviously I never though about the affect on include files that use
> FRONTEND.  Seems it is only Win32 that used FRONTEND in includes (except
> for pg_wchar.h, which is used by libpq and already built independently).
>
> > Just a thought - might this affect more things that rely on FRONTEND
> > defines in the headers? How bad would it be to just make libpgport build
> > two complete sets of object files, one for server and one for frontend,
> > instead of special-casing which files are rebuilt?
>
> The attached patch does exactly what you suggest.  I think it has to be
> patched to 8.0.X, 8.1.X, and HEAD.  I will apply in 24-48 hours.
>
> --
>   Bruce Momjian   http://candle.pha.pa.us
>   EnterpriseDB    http://www.enterprisedb.com
>
>   + If your life is a hard drive, Christ can be your backup. +

> Index: src/port/Makefile
> ===================================================================
> RCS file: /cvsroot/pgsql/src/port/Makefile,v
> retrieving revision 1.30
> diff -c -c -r1.30 Makefile
> *** src/port/Makefile    9 Dec 2005 21:19:36 -0000    1.30
> --- src/port/Makefile    7 May 2006 01:05:32 -0000
> ***************
> *** 26,37 ****
>   override CPPFLAGS := -I$(top_builddir)/src/port -DFRONTEND $(CPPFLAGS)
>   LIBS += $(PTHREAD_LIBS)
>
> ! # Replace object files that use FRONTEND define
> ! LIBOBJS_SRV := $(LIBOBJS)
> ! LIBOBJS_SRV := $(patsubst dirmod.o,dirmod_srv.o, $(LIBOBJS_SRV))
> ! LIBOBJS_SRV := $(patsubst exec.o,exec_srv.o, $(LIBOBJS_SRV))
> ! LIBOBJS_SRV := $(patsubst getaddrinfo.o,getaddrinfo_srv.o, $(LIBOBJS_SRV))
> ! LIBOBJS_SRV := $(patsubst thread.o,thread_srv.o, $(LIBOBJS_SRV))
>
>   all: libpgport.a libpgport_srv.a
>
> --- 26,33 ----
>   override CPPFLAGS := -I$(top_builddir)/src/port -DFRONTEND $(CPPFLAGS)
>   LIBS += $(PTHREAD_LIBS)
>
> ! # Replace all object files so they use FRONTEND define
> ! LIBOBJS_SRV := $(LIBOBJS:%.o=%_srv.o)
>
>   all: libpgport.a libpgport_srv.a
>
> ***************
> *** 60,72 ****
>   libpgport_srv.a: $(LIBOBJS_SRV)
>       $(AR) $(AROPT) $@ $^
>
> ! dirmod_srv.o: dirmod.c
> !     $(CC) $(CFLAGS) $(subst -DFRONTEND,, $(CPPFLAGS)) -c $< -o $@
> !
> ! exec_srv.o: exec.c
> !     $(CC) $(CFLAGS) $(subst -DFRONTEND,, $(CPPFLAGS)) -c $< -o $@
> !
> ! getaddrinfo_srv.o: getaddrinfo.c
>       $(CC) $(CFLAGS) $(subst -DFRONTEND,, $(CPPFLAGS)) -c $< -o $@
>
>   # No thread flags for server version
> --- 56,62 ----
>   libpgport_srv.a: $(LIBOBJS_SRV)
>       $(AR) $(AROPT) $@ $^
>
> ! %_srv.o: %.c
>       $(CC) $(CFLAGS) $(subst -DFRONTEND,, $(CPPFLAGS)) -c $< -o $@
>
>   # No thread flags for server version

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

--
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

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

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: [PATCH] Magic block for modules
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] Question on win32 semaphore simulation