Re: BUG #15080: ecpg on windows doesn't define HAVE_LONG_LONG_INT

Michael Meskes <meskes@postgresql.org>

From: Michael Meskes <meskes@postgresql.org>
To: jallen@americansavingslife.com, pgsql-bugs@lists.postgresql.org
Date: 2018-02-24T14:43:06Z
Lists: pgsql-bugs
> I found ecpg_get_data() is the call generating the error, and there's
> a
> block of code being skipped because HAVE_LONG_LONG_INT is not
> defined.  
> 
> I found the following code in pg_config.h and tried adding the 3rd
> line
> (#define HAVE_LONG_LONG_INT 1)...
> 
> /* Define to 1 if `long long int' works and is 64 bits. */
> #if (_MSC_VER > 1200)
> #define HAVE_LONG_LONG_INT_64 1
> #define HAVE_LONG_LONG_INT 1
> #endif

ECPG does not use pg_config.h, try making your change in ecpg_config.h
instead.

> throwing the same error.  I asked on the #postgresql irc channel and
> RhodiumToad and xocolatl said that if I reported this as a bug
> paquier would
> see this and he'd be the person to ask about it.  

Well, I'm not Michael Paquier and I don't know know why he would be the
person to ask about this, but I guess you don't mind me answering in
his stead.

Michael

-- 
Michael Meskes
Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
Meskes at (Debian|Postgresql) dot Org
Jabber: michael at xmpp dot meskes dot org
VfL Borussia! Força Barça! SF 49ers! Use Debian GNU/Linux, PostgreSQL


Commits

  1. Remove configure's check for nonstandard "long long" printf modifiers.

  2. printf("%lf") is not portable, so omit the "l".

  3. Support platforms where strtoll/strtoull are spelled __strtoll/__strtoull.

  4. Arrange to supply declarations for strtoll/strtoull if needed.

  5. Hot-fix ecpg regression test for missing ecpg_config.h inclusion.

  6. Add some test coverage for ecpg's "long long" support.

  7. Recognize that MSVC can support strtoll() and strtoull().

  8. Fix up ecpg's configuration so it handles "long long int" in MSVC builds.