Description
Currently, Spark resolves table-valued functions, for example, range, very differently from non-table valued functions. Also, there is no information displayed for table-valued functions. For example:
scala> sql("describe function range").show(false) +--------------------------+ |function_desc | +--------------------------+ |Function: range not found.| +--------------------------+
To make the behavior consistent, we can add a table function registry and resolve the table-valued function from the catalog.
This also allows Spark to have more built-in table-valued functions in the future.