Replies: 1 comment 2 replies
-
Table functions have not really been defined and I don't think all engines have quite the same interpretation of table functions. However, my understanding is that a table function and a relation operator are two different concepts. I think there will be a relation operator to execute table functions. For example, in duckdb a table function is a sort of "parameterized source relation". It can't take in two inputs and join them together like a join relation so you wouldn't be able to replace a join relation with a table function.
Yes, once you start getting into the more detailed concepts of SQL I think the nuances between engines grows. One of the goals of Substrait is to remove this nuance by very clearly defining the various concepts and, in some cases, having multiple definitions or flags controlling behaviors (we aren't trying to define the "right way" as much as we are trying to define "all common ways"). |
Beta Was this translation helpful? Give feedback.
-
Why does ReadRel model Filter inside?
There is a FilterRel, and you can easily model the Filter inside ReadRel by chaining a relation through FilterRel -> ReadRel. What is the rationale for including filter expression inside ReadRel?
What is your opinion for operators like explode or unnest in other systems?
I see pos_explode and explode as not implemented in the table function section. are you viewing table function as something different than a relation operator like a join or a group by?
fwiw, I think there are lots of syntax floating out there that I don't know how to view them. for example, duckdb unnest is just an expression against a list column. druid is in the from clause in a really weird way like trino.
Beta Was this translation helpful? Give feedback.
All reactions