pub enum Rule {
StatsAll,
Presize,
DirectAddressing,
ValidityFree,
FilterOrder,
TopNSeed,
NarrowArithmetic,
JoinElimination,
MemoryReservation,
GraphSections,
}Expand description
One switch.
Every statistics variant is on by default, so a fresh database behaves as it did before any of
this existed and an ablation is something a run asks for rather than something it inherits.
Rule::GraphSections is the exception and starts off, because it is a stored structure and a
new path through the executor rather than a better answer to a question already being asked.
Variants§
StatsAll
Every statistics consumer. Off means every question answers Stat::Unknown.
Presize
Presizing a hash aggregate from the distinct count of its grouping key.
DirectAddressing
Choosing direct addressing over hashing when the key range is small and dense.
ValidityFree
Dropping the validity handling in a kernel whose input has an exact zero null count.
FilterOrder
Ordering the conjuncts of a filter by selectivity over evaluation cost.
TopNSeed
Seeding a top-n threshold from a certified quantile instead of from infinity.
NarrowArithmetic
Summing a decimal column in i64 when its exact bounds fit, rather than in i128.
JoinElimination
Removing a join whose relationship is verified and whose columns nothing above it reads.
MemoryReservation
Reserving memory for an operator from what its input statistics say it will need.
GraphSections
Every stored graph section. Off means the sections are not read and no plan uses one.
Implementations§
Source§impl Rule
impl Rule
Sourcepub const fn name(self) -> &'static str
pub const fn name(self) -> &'static str
The canonical name, which is what a setting reads back as.
Sourcepub const fn master(self) -> Option<Self>
pub const fn master(self) -> Option<Self>
The rule that turns this one off from above, if there is one.
A per rule switch is not enough on its own: the ablation of section 9.3 is one statement and it has to reach every consumer, including the ones added after it was written.
Sourcepub const fn starts_on(self) -> bool
pub const fn starts_on(self) -> bool
Whether a fresh database has this rule on.
Everything does except Rule::GraphSections, and the reason is in the module docs.