The following bug has been logged online:
Bug reference: 4947
Logged by: Jim Michaels
Email address: jmichae3@yahoo.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