Thread: FE/BE docs and unsigned integers

FE/BE docs and unsigned integers

From
Jeff Davis
Date:
The documentation doesn't give much of a hint that the protocol is using
unsigned integers. For instance, under ParameterDescription here:

http://www.postgresql.org/docs/9.3/static/protocol-message-formats.html

it says that the object ID is an Int32, which is described here:

http://www.postgresql.org/docs/9.3/static/protocol-message-types.html

as just a plain 32-bit integer. But the code (e.g.
getParamDescriptions()) is clearly reading it into an Oid, which is
unsigned.

Is there a reason this isn't clear? Is it meant to be ambiguous because
(as far as the protocol is concerned) it's just an opaque 32 bits?

It seems like it's worth a note somewhere at least.

Regards,
    Jeff Davis




Re: FE/BE docs and unsigned integers

From
Tom Lane
Date:
Jeff Davis <pgsql@j-davis.com> writes:
> The documentation doesn't give much of a hint that the protocol is using
> unsigned integers. For instance, under ParameterDescription here:

> http://www.postgresql.org/docs/9.3/static/protocol-message-formats.html

> it says that the object ID is an Int32, which is described here:

> http://www.postgresql.org/docs/9.3/static/protocol-message-types.html

> as just a plain 32-bit integer. But the code (e.g.
> getParamDescriptions()) is clearly reading it into an Oid, which is
> unsigned.

> Is there a reason this isn't clear? Is it meant to be ambiguous because
> (as far as the protocol is concerned) it's just an opaque 32 bits?

I think it was just laziness, and/or not wanting to add a uint32 type
to the documentation's notation, since (IIRC) there aren't any places
where a field is unsigned and that really matters to the protocol.

If you think it's worth being more precise, feel free to submit a patch.

            regards, tom lane