On Fri, Jun 8, 2018 at 7:48 AM, Laurenz Albe <laurenz.a...@cybertec.at> wrote:
> Amit Kapila wrote: > > On Wed, Jun 6, 2018 at 3:06 PM, Kuntal Ghosh <kuntalghosh.2...@gmail.com> > wrote: > > > It seems the "#ifndef FRONTEND" restriction was added around > > > pgwin32_open() for building libpq with Visual C++ or Borland C++. The > > > restriction was added in commit 422d4819 to build libpq with VC++[1]. > > > Later, in commit fd7c3f67e0bc4, the support for Borland C++ was also > > > added. > > > > > > So, I'm not sure whether removing that restriction will work for all > > > front-end modules. > > > > > > > Thanks for doing investigation. I agree with you that it appears from > the old > > discussion that we have added this restriction to build libpq/psql > (basically frontend) > > modules. However, I tried to build those modules on windows by removing > that > > restriction and it doesn't give me any problem (except one extra > argument error, > > which can be easily resolved). It might be that it gives problem with > certain > > version of MSVC. I think if we want to pursue this direction, one needs > to verify > > on various supportted versions (of Windows) to see if things are okay. > > That's what the buildfarm is for, right? > > > Speaking about the issue at-hand, one way to make pg_test_fsync work in > to just > > include c.h and remove inclusion of postgres_fe.h, but not sure if that > is the best way. > > I am not sure if we have any other options to proceed in this case. > > > > Thoughts? > > I thought of a better way. > pg_test_fsync is properly listed as a server application in the > documentation, > so I think it should be built as such, as per the attached patch. > -#include "postgres_fe.h" +#include "postgres.h" I don't think that server application can use backend environment unless it is adapted to do so. I think the application should have the capability to deal with backend stuff like ereport, elog etc, if we don't want to use FRONTEND environment. The other server applications like pg_ctl.c, initdb.c, etc. also uses FRONTEND environment. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com