Thread: format_type infelicity

format_type infelicity

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

regression=# \df length               List of functionsResult data type |  Name  | Argument data types
------------------+--------+---------------------integer          | length | "bit"integer          | length |
bpcharinteger         | length | character varyinginteger          | 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


Re: format_type infelicity

From
Peter Eisentraut
Date:
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