> True, although there's a certain inconsistency in allowing a whole row
> to be passed to a function by
>
> select foo(pg_class) from pg_class;
>
> and not allowing the same row to be output by
Imho there is a big difference between the two. The foo(pg_class) calls a function
with argument type opaque or type pg_class.
I would go so far as to say, that above foo function call would have a
different meaning if written with 'pg_class.*'.
select foo(pg_class.*) from pg_class;
Could be interpreted as calling a function foo with pg_class ncolumns
arguments of the corresponding types.
>
> select pg_class from pg_class;
Probably a valid interpretation would be if type pg_class or opaque had an
output function.
Andreas