public interface FilterPushDownListener
Supports two kinds of filter push down:
IN
clause.
In both cases, the conditions are in the form of a
ExprNode.ColRelOpConstNode
in which one side refers to a column in the scan
and the other is a constant expression. The "driver" will ensure
the rel op is of the correct form; this class ensures that the
column is valid for the scan and the type of the value matches the
column type (or can be converted.)
The DNF form further ensures that all rel ops refer to the same column, and that only the equality operator appears in the terms.
Modifier and Type | Interface and Description |
---|---|
static interface |
FilterPushDownListener.ScanPushDownListener
Listener for a one specific group scan.
|
Modifier and Type | Method and Description |
---|---|
FilterPushDownListener.ScanPushDownListener |
builderFor(GroupScan groupScan)
Check if the filter rule should be applied to the target group scan,
and if so, return the builder to use.
|
boolean |
isTargetScan(GroupScan groupScan)
Broad check to see if the scan is of the correct type for this
listener.
|
String |
prefix() |
String prefix()
boolean isTargetScan(GroupScan groupScan)
public boolean isTargetScan(ScanPrel scan) {
return scan.getGroupScan() instanceof MyGroupScan;
}
groupScan
- the scan nodeFilterPushDownListener.ScanPushDownListener builderFor(GroupScan groupScan)
Calcite will run this rule multiple times during planning, but the transform only needs to occur once. Allows the group scan to mark in its own way whether the rule has been applied.
groupScan
- the scan nodeCopyright © 1970 The Apache Software Foundation. All rights reserved.