Doc: section "8.21. Pseudo-Types" needs a bit of clarification?

Started by Aleksander Alekseev8 months ago2 messages
#1Aleksander Alekseev
aleksander@timescale.com

Hi,

While reading our documentation about pseudo-types [1]https://www.postgresql.org/docs/current/datatype-pseudo.html I noticed that it says:

"""
anyelement - Indicates that a function accepts any data type
anyarray - Indicates that a function accepts any array data type
"""

This may give an impression that anyelement and anyarray can be used
as an argument ("accepted") but not as a return value, while in fact
they can. In particular we have [2]https://www.postgresql.org/docs/current/functions-array.html:

"""
array_fill(anyelement, integer[] [, integer[] ] ) -> anyarray
unnest(anyarray) -> setof anyelement
"""

What makes section 8.21 even more confusing is the fact that a little
below we say:

"""
cstring - Indicates that a function accepts or *returns* a
null-terminated C string
"""

Should we be slightly more precise here?

[1]: https://www.postgresql.org/docs/current/datatype-pseudo.html
[2]: https://www.postgresql.org/docs/current/functions-array.html

--
Best regards,
Aleksander Alekseev

#2David G. Johnston
david.g.johnston@gmail.com
In reply to: Aleksander Alekseev (#1)
Re: Doc: section "8.21. Pseudo-Types" needs a bit of clarification?

On Tue, May 27, 2025 at 11:15 AM Aleksander Alekseev <
aleksander@timescale.com> wrote:

While reading our documentation about pseudo-types [1] I noticed that it
says:

"""
anyelement - Indicates that a function accepts any data type
anyarray - Indicates that a function accepts any array data type
"""

This may give an impression that anyelement and anyarray can be used
as an argument ("accepted") but not as a return value, while in fact
they can. In particular we have [2]:

Should we be slightly more precise here?

I'm fine with the status quo for these. The table entry points out the
pertinent part - that they must be used on at least one input argument.
The various texts both in 8.21 and 36.2 describing usage and overall
behavior make it clear they can appear also on the return type clause so
long as they also appear in the input arguments. The functions themselves
morph strictly upon the types used in the input arguments.

David J.