Christopher Kings-Lynne wrote:
> Why is there the requirement to declare the type at SELECT time at all? Why
> not just take what you get when you run the function?
The column names and types are determined in the parser, and used in the
planner, optimizer, and executor. I'm not sure how the backend could
plan a join or a where criteria otherwise.
Remember that the function has to look just like a table or a subselect
(i.e a RangeVar). With a table, the column names and types are
predefined. With a subselect, parsing it yields the same information.
With a table function, we need some way of providing it -- i.e. either
with a predefined type, or now with a definition right in the FROM clause.
Joe