Streamline anachronistic Ptr2Long union usage
#533
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PostgreSQL itself has been requiring a C compiler that has
uintptr_tsince 9.0 (postgres/postgres@85d02a6). The PL/Java 1.6.x branch only supports back to PG 9.5, so there is no question the type is supported.An existing static assert in
DualState.cis hereby changed to assert thatsizeof(uintptr_t) <= sizeof(jlong); this is also assured for the present by a comment upstream inpostgres.hsection 1: "we require: sizeof(Datum) == sizeof(void *) == 4 or 8" (whereDatumisuintptr_t).In passing, specifically type as
SPIPlanPtrsome variables that had been typedvoid *. That was once their actual type in the SPI docs, but not since PG 8.2.The few sites that ended up as
PointerGetDatum(JLongGet(Pointer,...))are effectively a longwinded way of doing nothing, but I left them that way to clearly reflect that a pointer is involved, and avoid assumingPointerGetDatumwill always be as simple as it currently is.