Thomas Hallgren wrote:
> Tom Lane wrote:
>> Furthermore, we have never promised ABI-level compatibility across
>> versions inside the backend, and we are quite unlikely to make such
>> a promise in the foreseeable future.
>>
> I know that no promises has been made but PostgreSQL is improved every
> day and this would be a very easy promise to make.
Binary compatibility of backend APIs is by no means a "very easy promise
to make," nor would it be a good idea in any case.
> Also, the interpretation of the definition vary between compiler
> vendors. On Windows Itanium, the int is 32 bit. On Unix it's 64.
`int' is 32 bit on most modern platforms I can think of. Perhaps you're
thinking of `long', which is indeed 64-bit on many 64-bit Unixen but
32-bit on 64-bit Windows (BTW, this likely means that Postgres is
completely broken on 64-bit Windows: sizeof(Datum) == sizeof(unsigned
long) == 4, sizeof(void *) == 8).
> The 1998 revision of C declares the following types for a good reason:
>
> int8_t , int16_t, int32_t int64_t,
> uint8_t, uint16_t, uint32_t, uint64_t.
We don't currently depend on C99, and not all platforms have a 64-bit
datatype. In any case, I'm still unconvinced that using `int' and `long'
in backend APIs is a problem.
-Neil