knowsys/nemo

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

开放

#446 创建于 2023年12月11日

 (1 条评论) (0 个反应) (1 位负责人)Rust (17 个派生)auto 404
help wantedphysicalplanning enginequestiontechnical-debt

仓库指标

星标
 (269 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

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

贡献者指南