Hi, all: I'm learning Calcite's TableMacro[1] and TableFunction[2] and I feel they are very similar. - From their descriptions, TableMacro is for *"compile time", * TableFunction is for “*execution time". * *- From an email[3], I know T*ableFunction can be seen as a lightweight relational operator.
*But s*ome descriptions do not seem to strictly distinguish between the two interfaces. For example, ``` */** Table function that implements a view. It returns the operator* * * tree of the view's SQL query. */* public class ViewTableMacro implements TableMacro ``` ViewTableMacro[3] implements TableMacro, but the description is a Table function. Is the description inaccurate? Is anyone familiar with their other differences? Thanks very much. Refs: [1] https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/schema/TableMacro.java [2] https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/schema/TableFunction.java [3] https://lists.apache.org/thread/twzmgl5sg701dxw0y24wkzwxonz0sy65 [4] https://lists.apache.org/thread/gz8w0gr9cp1nl1nslrw5c3pbxrog5l00