trait InfallibleRule<C: ConventionMarker>:
Send
+ Sync
+ Description {
// Required method
fn apply(&self, plan: PlanRef<C>) -> Option<PlanRef<C>>;
}
Expand description
An one-to-one transform for the PlanNode
.
It’s a convenient trait to implement FallibleRule
, thus made available only within this module.
Required Methods§
Implementors§
impl InfallibleRule<Batch> for BatchIcebergCountStar
impl InfallibleRule<Batch> for BatchIcebergPredicatePushDownRule
impl InfallibleRule<Batch> for BatchProjectMergeRule
impl InfallibleRule<Batch> for BatchPushLimitToScanRule
impl InfallibleRule<Logical> for AggCallMergeRule
impl InfallibleRule<Logical> for AggGroupBySimplifyRule
impl InfallibleRule<Logical> for AggProjectMergeRule
impl InfallibleRule<Logical> for AlwaysFalseFilterRule
impl InfallibleRule<Logical> for ApplyAggTransposeRule
impl InfallibleRule<Logical> for ApplyDedupTransposeRule
impl InfallibleRule<Logical> for ApplyEliminateRule
impl InfallibleRule<Logical> for ApplyExpandTransposeRule
impl InfallibleRule<Logical> for ApplyFilterTransposeRule
impl InfallibleRule<Logical> for ApplyHopWindowTransposeRule
impl InfallibleRule<Logical> for ApplyJoinTransposeRule
impl InfallibleRule<Logical> for ApplyLimitTransposeRule
impl InfallibleRule<Logical> for ApplyOverWindowTransposeRule
impl InfallibleRule<Logical> for ApplyProjectSetTransposeRule
impl InfallibleRule<Logical> for ApplyProjectTransposeRule
impl InfallibleRule<Logical> for ApplyToJoinRule
impl InfallibleRule<Logical> for ApplyTopNTransposeRule
impl InfallibleRule<Logical> for ApplyUnionTransposeRule
impl InfallibleRule<Logical> for CommonSubExprExtractRule
impl InfallibleRule<Logical> for CrossJoinEliminateRule
impl InfallibleRule<Logical> for DagToTreeRule
impl InfallibleRule<Logical> for DistinctAggRule
impl InfallibleRule<Logical> for EmptyAggRemoveRule
impl InfallibleRule<Logical> for ExceptMergeRule
impl InfallibleRule<Logical> for ExceptToAntiJoinRule
impl InfallibleRule<Logical> for ExpandToProjectRule
impl InfallibleRule<Logical> for GroupingSetsToExpandRule
impl InfallibleRule<Logical> for IndexSelectionRule
impl InfallibleRule<Logical> for IntersectMergeRule
impl InfallibleRule<Logical> for IntersectToSemiJoinRule
impl InfallibleRule<Logical> for JoinCommuteRule
impl InfallibleRule<Logical> for JoinProjectTransposeRule
impl InfallibleRule<Logical> for LeftDeepTreeJoinOrderingRule
impl InfallibleRule<Logical> for LimitPushDownRule
impl InfallibleRule<Logical> for LogicalFilterExpressionSimplifyRule
impl InfallibleRule<Logical> for MaxOneRowEliminateRule
impl InfallibleRule<Logical> for MergeMultiJoinRule
impl InfallibleRule<Logical> for MinMaxOnIndexRule
impl InfallibleRule<Logical> for OverWindowMergeRule
impl InfallibleRule<Logical> for OverWindowSplitRule
impl InfallibleRule<Logical> for OverWindowToAggAndJoinRule
impl InfallibleRule<Logical> for OverWindowToTopNRule
impl InfallibleRule<Logical> for ProjectEliminateRule
impl InfallibleRule<Logical> for ProjectJoinMergeRule
impl InfallibleRule<Logical> for ProjectJoinSeparateRule
impl InfallibleRule<Logical> for ProjectMergeRule
impl InfallibleRule<Logical> for PullUpHopRule
impl InfallibleRule<Logical> for PushCalculationOfJoinRule
impl InfallibleRule<Logical> for RewriteLikeExprRule
impl InfallibleRule<Logical> for SourceToKafkaScanRule
impl InfallibleRule<Logical> for BushyTreeJoinOrderingRule
impl InfallibleRule<Logical> for FilterWithNowToJoinRule
impl InfallibleRule<Logical> for GenerateSeriesWithNowRule
impl InfallibleRule<Logical> for SplitNowAndRule
impl InfallibleRule<Logical> for SplitNowOrRule
impl InfallibleRule<Logical> for TableFunctionToFileScanRule
impl InfallibleRule<Logical> for TableFunctionToMySqlQueryRule
impl InfallibleRule<Logical> for TableFunctionToPostgresQueryRule
impl InfallibleRule<Logical> for TableFunctionToProjectSetRule
impl InfallibleRule<Logical> for TopNOnIndexRule
impl InfallibleRule<Logical> for TopNToVectorSearchRule
This rule converts the following TopN pattern to LogicalVectorSearch
LogicalTopN { order: [$expr1 ASC], limit: TOP_N, offset: 0 }
└─LogicalProject { exprs: [VectorDistanceFunc(vector_expr1, vector_expr2) as $expr1, other_exprs...] }
to
LogicalProject { exprs: [other_exprs... + distance_column] }
└─LogicalVectorSearch { distance_type: `PbDistanceType`, top_n: TOP_N, left: vector_expr1, right: vector_expr2, output_columns: [...] }