@Internal public class PushFilterPastChangelogNormalizeRule extends org.apache.calcite.plan.RelRule<PushFilterPastChangelogNormalizeRule.Config>
ChangelogNormalize
operator to reduce its state size.
This rule looks for Calc → ChangelogNormalize where the Calc
contains a filter condition. The condition is transformed into CNF and then each conjunction is
tested for whether it affects only primary key columns. If such conditions exist, they are moved
into a new, separate Calc and pushed through the ChangelogNormalize operator. ChangelogNormalize
keeps state for every unique key it encounters, thus pushing filters on the primary key in front
of it helps reduce the size of its state.
Note that pushing primary key filters is safe to do, but pushing any other filters can lead to incorrect results.
| 限定符和类型 | 类和说明 |
|---|---|
static interface |
PushFilterPastChangelogNormalizeRule.Config
Configuration for
PushFilterPastChangelogNormalizeRule. |
org.apache.calcite.plan.RelRule.Done, org.apache.calcite.plan.RelRule.MatchHandler<R extends org.apache.calcite.plan.RelOptRule>, org.apache.calcite.plan.RelRule.OperandBuilder, org.apache.calcite.plan.RelRule.OperandDetailBuilder<R extends org.apache.calcite.rel.RelNode>, org.apache.calcite.plan.RelRule.OperandTransform| 限定符和类型 | 字段和说明 |
|---|---|
static org.apache.calcite.plan.RelOptRule |
INSTANCE |
| 构造器和说明 |
|---|
PushFilterPastChangelogNormalizeRule(PushFilterPastChangelogNormalizeRule.Config config) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
onMatch(org.apache.calcite.plan.RelOptRuleCall call) |
public PushFilterPastChangelogNormalizeRule(PushFilterPastChangelogNormalizeRule.Config config)
Copyright © 2014–2022 The Apache Software Foundation. All rights reserved.