[DOCS] Int32 type unclear about signedness - Mailing list pgsql-docs

From rsto@paranoia.at
Subject [DOCS] Int32 type unclear about signedness
Date
Msg-id 20170823184523.8152.35782@wrigleys.postgresql.org
Whole thread Raw
Responses Re: [DOCS] Int32 type unclear about signedness
List pgsql-docs
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/9.6/static/protocol-message-types.html
Description:

The specification of the Int32 Message data type in section 51.4 of the
current documentation does to specify signedness (see [1]).

Both its C-like name and its use for negative values in several protocol 3
messages make assuming signedness only reasonable. Yet, when used for
message lengths, the libpq code seems unclear:

The libpq frontend reads message lengths from the backend as 4 bytes into a
signed int (see [2]). It checks if the length exceeds 30000 and allows
excessive message lengths only for some messages.

Yet, the related backend code uses a uint32_t to transmit the length value
of a size_t (see [3]). This suggests that UINT32_MAX lengths would
theoretically be possible and driver implementations would need to handle
it.

I'm almost certain that signed ints are meant, but it might not hurt to
explicitly state it in section 51.4. Furthermore, the restriction of certain
message lengths to 30000 is not documented.

Did I oversee something in the docs? Otherwise, I'd be happy to send a patch
with a suggested change in the documentation.

[1] https://www.postgresql.org/docs/9.6/static/protocol-message-types.html
[2]
https://github.com/postgres/postgres/blob/master/src/interfaces/libpq/fe-protocol3.c#L1985
[3]
https://github.com/postgres/postgres/blob/master/src/backend/libpq/pqcomm.c#L1570

P.S.: Thanks for PostgreSQL, such a great tool!

pgsql-docs by date:

Previous
From: Alexander Lakhin
Date:
Subject: [DOCS] Errors in documentation
Next
From: Tom Lane
Date:
Subject: Re: [DOCS] Useful documentation removed from 9.5 docs