format_type infelicity

Started by Tom Laneabout 24 years ago2 messages
#1Tom Lane
tgl@sss.pgh.pa.us

I just noticed that psql is now printing function argument/result types
in a less than pleasing fashion:

regression=# \df length
List of functions
Result data type | Name | Argument data types
------------------+--------+---------------------
integer | length | "bit"
integer | length | bpchar
integer | length | character varying
integer | length | text
....

It used to show these first two as unquoted bit and character,
respectively. The reason for the change is my recent twiddling
to ensure that pg_dump would dump the types of columns with -1
typmod in an appropriate fashion.

I think an appropriate fix would be to make the format_type function
distinguish between format_type(typeoid, -1) and format_type(typeoid,
NULL), which it currently treats the same. The former could be taken
to mean "give me the type name for a column with typmod -1" whereas
the latter could be taken to mean "give me a type name in a context
where there is no typmod", such as a function argument/result type.

Looking through the existing uses of format_type, it seems that all
the call sites have the right choice already, so this behavior is not
too unreasonable. Any objections?

regards, tom lane

#2Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#1)
Re: format_type infelicity

Tom Lane writes:

I think an appropriate fix would be to make the format_type function
distinguish between format_type(typeoid, -1) and format_type(typeoid,
NULL), which it currently treats the same. The former could be taken
to mean "give me the type name for a column with typmod -1" whereas
the latter could be taken to mean "give me a type name in a context
where there is no typmod", such as a function argument/result type.

This was the idea, but until recently there was no actual need for
printing something different.

--
Peter Eisentraut peter_e@gmx.net