Represent zero-column relations (aka booleans) in the `PartialTrieScan` interface?
- Dominant language
- Rust
- Stars
- 289
- Forks
- 21
- PR merge metrics
- No merged PRs in 30d
Description
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
Contributor guide
Assessment
This issue has not been assessed yet.