knowsys / knowsys/nemo

Represent zero-column relations (aka booleans) in the `PartialTrieScan` interface?

Open
#446 1 comment 0 reactions 1 assignee Claimed by @aannleax View on GitHub
help wanted physical planning engine question technical-debt
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.