Skip site navigation (1) Skip section navigation (2)

BUG #4947: libpq PQntuples should return 64-bit number

From: "Jim Michaels" <jmichae3(at)yahoo(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #4947: libpq PQntuples should return 64-bit number
Date: 2009-07-28 06:54:39
Message-ID: 200907280654.n6S6sdvm050676@wwwmaster.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-bugs
The following bug has been logged online:

Bug reference:      4947
Logged by:          Jim Michaels
Email address:      jmichae3(at)yahoo(dot)com
PostgreSQL version: 8.4.0
Operating system:   Win XP Pro Sp3
Description:        libpq PQntuples should return 64-bit number
Details: 

I agree that 64-bit numbers are compiler-specific.  this can be overcome
with something like the following code:

although now I understand that the microsoft 2008 compiler implements
UINT128, UINT8, UINT64, UINT32, INT64 and the like, but the MINGW compiler
and BCC++5.5 do not necessarily implement them.

maybe with some #if defined(INT64) the following code could be made proper.
something common to all 32-bit microsoft compilers is the __int64 type.

I suggest using the qlong type.

/*types.h*/
#if !defined(TYPES_LIB_VERSION)
#define TYPES_LIB_VERSION "1.0"

typedef unsigned long dword;
typedef unsigned short word;
typedef unsigned char byte;

#if defined(__DJGPP__)
typedef unsigned long long qword;
typedef long long qlong;
#elif defined(__BORLANDC__)||defined(_MSC_VER) || defined(__MINGW32__)
#include <windows.h>

#if defined(__MINGW32__)
#include <basetsd.h>
#endif

#endif //DJGPP

/*these are kept down here below the #include windows.h on purpose.
__int64 is defined in basetsd.h in MINGW.
*/
#if defined(__BORLANDC__) || defined(_MSC_VER) || defined(__GNUC__)

#if !defined(DWORD)
typedef unsigned long DWORD;
#endif

#if !defined(WORD)
typedef unsigned short WORD;
#endif

#if !defined(BYTE)
typedef unsigned char BYTE;
#endif

#endif /*BORLANDC||MSC_VER||GNUC*/

#if defined(__MINGW32__)||defined(_MSC_VER)||defined(__BORLANDC__)

typedef unsigned __int64 qword;
typedef __int64 qlong;

#if !defined(QWORD)
typedef unsigned __int64 QWORD;
#endif

#elif defined(__DJGPP__)

#if !defined(QWORD)
typedef unsigned long long QWORD;
#endif

#endif /*MINGW32*/


#endif

Responses

pgsql-bugs by date

Next:From: fousDate: 2009-07-28 08:30:57
Subject: BUG #4948: getting error while vacuuming the database
Previous:From: Craig RingerDate: 2009-07-28 06:13:55
Subject: Re: BUG #4945: Parallel update(s) gone wild

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group