nemo
nemo copied to clipboard
Represent zero-column relations (aka booleans) in the `PartialTrieScan` interface?
A relation with zero columns can have two possible values: either the empty set {}
or the set containing the empty tuple {()}
. Currently there is no way to cleanly represent such a relation in the PartialTrieScan
interface. We need this, if we want to generate execution plans, that have "zero column" intermediary results, which is needed if we want to generate one overall execution plan for each rule.
Are there other solutions?
If we change the execution planning engine in such a way, that a single rule can produce multiple execution plans, we could circumvent representing these types of relations in the PartialTrieScan
interface. The implementation of this may be simpler, since it does not require the physical layer to change, however it has the downside that optimization of execution plans might become more difficult, and the overall complexity of the planning engine (which is already hard to understand) increases.
Where do we need this?
For fixing the open issues #434, #428, #193