Package org.apache.drill.exec.store.plan
Class AbstractPluginImplementor
java.lang.Object
org.apache.drill.exec.store.plan.AbstractPluginImplementor
- All Implemented Interfaces:
PluginImplementor
- Direct Known Subclasses:
DeltaPluginImplementor
,DrillPluginImplementor
,IcebergPluginImplementor
,MongoPluginImplementor
Abstract base implementation of
PluginImplementor
that can be used by
plugin implementors which can support only a subset of all provided operations.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
If the plugin doesn't support native filter pushdown, but the reader can prune the set of rows to read.boolean
If the plugin doesn't support native limit pushdown, but the reader can limit the number of rows to read.boolean
canImplement
(org.apache.calcite.rel.core.Aggregate aggregate) boolean
canImplement
(org.apache.calcite.rel.core.Filter filter) boolean
canImplement
(org.apache.calcite.rel.core.Join scan) boolean
canImplement
(org.apache.calcite.rel.core.Project project) boolean
canImplement
(org.apache.calcite.rel.core.Sort sort) boolean
canImplement
(org.apache.calcite.rel.core.TableScan scan) boolean
canImplement
(org.apache.calcite.rel.core.Union union) boolean
canImplement
(DrillLimitRelBase limit) protected GroupScan
findGroupScan
(org.apache.calcite.rel.RelNode node) protected abstract boolean
hasPluginGroupScan
(org.apache.calcite.rel.RelNode node) void
implement
(PluginAggregateRel aggregate) void
implement
(PluginFilterRel filter) void
implement
(PluginJoinRel join) void
implement
(PluginLimitRel limit) void
implement
(PluginProjectRel project) void
implement
(PluginSortRel sort) void
implement
(PluginUnionRel union) void
boolean
splitProject
(org.apache.calcite.rel.core.Project project) protected abstract Class<? extends StoragePlugin>
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.drill.exec.store.plan.PluginImplementor
getPhysicalOperator, visitChild
-
Constructor Details
-
AbstractPluginImplementor
public AbstractPluginImplementor()
-
-
Method Details
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
implement
- Specified by:
implement
in interfacePluginImplementor
- Throws:
IOException
-
canImplement
public boolean canImplement(org.apache.calcite.rel.core.Aggregate aggregate) - Specified by:
canImplement
in interfacePluginImplementor
-
canImplement
public boolean canImplement(org.apache.calcite.rel.core.Filter filter) - Specified by:
canImplement
in interfacePluginImplementor
-
canImplement
- Specified by:
canImplement
in interfacePluginImplementor
-
canImplement
public boolean canImplement(org.apache.calcite.rel.core.Project project) - Specified by:
canImplement
in interfacePluginImplementor
-
canImplement
public boolean canImplement(org.apache.calcite.rel.core.Sort sort) - Specified by:
canImplement
in interfacePluginImplementor
-
canImplement
public boolean canImplement(org.apache.calcite.rel.core.Union union) - Specified by:
canImplement
in interfacePluginImplementor
-
canImplement
public boolean canImplement(org.apache.calcite.rel.core.TableScan scan) - Specified by:
canImplement
in interfacePluginImplementor
-
canImplement
public boolean canImplement(org.apache.calcite.rel.core.Join scan) - Specified by:
canImplement
in interfacePluginImplementor
-
splitProject
public boolean splitProject(org.apache.calcite.rel.core.Project project) - Specified by:
splitProject
in interfacePluginImplementor
-
artificialLimit
public boolean artificialLimit()Description copied from interface:PluginImplementor
If the plugin doesn't support native limit pushdown, but the reader can limit the number of rows to read. In this case limit operator on top of the scan should be preserved to ensure returning the correct rows number.- Specified by:
artificialLimit
in interfacePluginImplementor
-
artificialFilter
public boolean artificialFilter()Description copied from interface:PluginImplementor
If the plugin doesn't support native filter pushdown, but the reader can prune the set of rows to read. In this case filter operator on top of the scan should be preserved to ensure returning the correct subset of rows.- Specified by:
artificialFilter
in interfacePluginImplementor
-
findGroupScan
-
supportedPlugin
-
hasPluginGroupScan
protected abstract boolean hasPluginGroupScan(org.apache.calcite.rel.RelNode node)
-