Rob Marjot <rob@marjot-multisoft.com> writes:
> Any thoughts on how to make sure multiple columns are returned; without
> specifying this in the function's prototype return clause?
If you want "SELECT * FROM" to expand to multiple columns, the names
and types of those columns *must* be available at parse time. You
can either declare them in the function prototype, or you can supply
them in the function call, a la
select * from my_func(...) as x(a int, b int);
It will not work to hope that the parser can predict what the function
will do when executed.
regards, tom lane