Re: MinGW compiler warnings in ecpg tests

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Michael Meskes <meskes@postgresql.org>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, Nazir Bilal Yavuz <byavuz81@gmail.com>
Date: 2025-10-30T21:39:24Z
Lists: pgsql-hackers
Hi,

On 2024-12-06 15:44:20 +1300, Thomas Munro wrote:
> On Fri, Dec 6, 2024 at 4:13 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > Thomas Munro <thomas.munro@gmail.com> writes:
> > > Yeah.  This warning is visible on CI, and on fairywren since its MSYS2
> > > upgrade a couple of months ago.  Old MinGW didn't like %lld (I think
> > > perhaps the printf from msvcrt.dll from 1996 didn't like it and MinGW
> > > knew that), but new MinGW doesn't like %I64d (that's interesting, but
> > > not relevant here because %lld is clearly the correct format string,
> > > and it works).  We should just revert that change.  Here's a patch.
> >
> > +1
> 
> Thanks for looking.  Pushed, and that fixed that on fairywren.
> 
> > > Those were there before the upgrade.  POSIX says that environ should
> > > not be declared by a header, but Windows apparently declares it, or at
> > > least its cousin _environ, in <stdlib.h> which we include in c.h.  I
> > > have no idea why Visual Studio doesn't warn, or why the documentation
> > > only tells you about _environ and not environ, or where the macro (?)
> > > comes from that renames it, but it passes CI and is
> > > warning-free on both toolchains if you just hide the offending
> > > declarations.
> >
> > Isn't this likely to break things for every other Windows toolchain?
> > I think the concept might be OK, but we need a tighter #if condition.
> 
> Cool, I'll do that for MinGW only then.

I was looking at merging [1], however the backbranches < 18 fail in
CompilerWarnings due to this error [2], after upgrading to trixie. Seems like
we ought to backpatch 7bc9a8bdd2d.  Haven't checked yet whether 1319997d is
also required for a clean build.

Greetings,

Andres Freund

[1] https://postgr.es/m/CAN55FZ1_B1usTskAv%2BAYt1bA7abVd9YH6XrUUSbr-2Z0d5Wd8w%40mail.gmail.com
[2] https://cirrus-ci.com/task/6526575971139584



Commits

  1. Fix printf format string warning on MinGW.

  2. Backpatch: Fix warnings about declaration of environ on MinGW

  3. Fix warnings about declaration of environ on MinGW.

  4. Fix compiler warnings in ecpg tests