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

Reply via email to