Sorry, there is a problem with the format of the last message. Here is new version:
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 TableFunction can be seen as a lightweight relational operator. But some 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[4] 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 On Mon, 24 Oct 2022 at 19:43, Jiajun Xie <jiajunbernou...@gmail.com> wrote: > 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 > >