pub enum Refusal {
NoLookup,
CollectionReadsTheElement,
KeyReadsMoreThanTheElement,
PredicateIsNotAnEquality,
ProjectionReadsMoreThanTheRow,
NothingSaved,
NoMembership,
MembershipAndMore,
}Expand description
Why a body that contained a map_get was not recognised as a join.
§99.6’s rule for the case inference cannot see: “compile it the slow way and say so”. These
reach crate::plan::Node::because, so beck explain cost prints the reason beside the
operator that pays for it rather than leaving a reader to guess which of the conditions failed.
Variants§
NoLookup
Nothing in the body that could relate: no map_get and no filter_list.
CollectionReadsTheElement
The collection looked up in is derived per element, so there is nothing to index once.
KeyReadsMoreThanTheElement
The key reads something other than the element, so it is not an equi-join on the left row.
PredicateIsNotAnEquality
The filter’s predicate is not an equality with one side over each element, so there is no key to arrange the collection by.
ProjectionReadsMoreThanTheRow
The aggregate’s projection reads something other than the row it is applied to, so what each row contributes to its group is not a function of that row.
NothingSaved
Recognising it would not remove the capture that costs the rebuild, so it buys nothing.
NoMembership
Nothing in the predicate asks another collection whether it holds a key, so there is no difference and no intersection here.
MembershipAndMore
The predicate asks a collection whether it holds a key and something else besides, so the filter is not the membership test — it contains one.