My first Intuition is to not expose the row data type. If we add columnar
executing later, there may never be a Row data type during runtime (cp
paper on hyper runtime engine).

For these declarative operations, I think it is a big advantage to keep the
underpinnings strictly separate so we can change the execution model.

Also, I think that explicit switches between the logical and physical
abstraction (switching from class type to logical row type and vice versa)
make things more transparent to the user. As an example: A filter in a
logical query expression may be pushed down, a filter defined as as udf on
a physical type is not pushed down.

Reply via email to