This is a mechanism of Substrait to define functions and types external
to the core specification. This PR models the declarations as Symbols
and references to them as symbol references in MLIR, which allows to use
MLIR tooling around symbols (such as SymbolTables, iterating over
symbol uses, code navigation via the LSP server, etc.). The PR does not
yet implement a mechanism to use the functions and types, which
subsequent PRs for ScalarFunction and similar are going to do.
While touching the PlanOp-related test cases, this op also merges the
tests of that op, which were previously split into a "simple" and a
"version" file, which probably predates the possibility to tell
mlir-translate (and custom variants) to use output splitters.
This is a mechanism of Substrait to define functions and types external to the core specification. This PR models the declarations as
Symbol
s and references to them as symbol references in MLIR, which allows to use MLIR tooling around symbols (such asSymbolTable
s, iterating over symbol uses, code navigation via the LSP server, etc.). The PR does not yet implement a mechanism to use the functions and types, which subsequent PRs forScalarFunction
and similar are going to do.While touching the
PlanOp
-related test cases, this op also merges the tests of that op, which were previously split into a "simple" and a "version" file, which probably predates the possibility to tellmlir-translate
(and custom variants) to use output splitters.