public class HiveRelFieldTrimmer extends RelFieldTrimmer
RelFieldTrimmer.TrimResult| Modifier and Type | Field and Description |
|---|---|
protected static org.slf4j.Logger |
LOG |
REL_BUILDER, trimFieldsDispatcher| Modifier | Constructor and Description |
|---|---|
protected |
HiveRelFieldTrimmer(boolean fetchStats) |
| Modifier and Type | Method and Description |
|---|---|
static HiveRelFieldTrimmer |
get()
Returns a HiveRelFieldTrimmer instance that does not retrieve
stats.
|
static HiveRelFieldTrimmer |
get(boolean fetchStats)
Returns a HiveRelFieldTrimmer instance that can retrieve stats.
|
static HiveRelFieldTrimmer |
get(boolean fetchStats,
boolean useLMFBasedDispatcher)
Returns a HiveRelFieldTrimmer instance that can retrieve stats and use
a custom dispatcher.
|
static void |
initializeFieldTrimmerClass(List<Class<? extends org.apache.calcite.rel.RelNode>> nodeClasses)
This method can be called at startup time to pre-register all the
Hive classes that may be visited during the planning phase.
|
protected void |
register(List<Class<? extends org.apache.calcite.rel.RelNode>> nodeClasses)
This method can be called to pre-register all the classes that may be
visited during the planning phase.
|
protected RelFieldTrimmer.TrimResult |
result(org.apache.calcite.rel.RelNode r,
org.apache.calcite.util.mapping.Mapping mapping) |
org.apache.calcite.rel.RelNode |
trim(org.apache.calcite.tools.RelBuilder relBuilder,
org.apache.calcite.rel.RelNode root)
Trims unused fields from a relational expression.
|
org.apache.calcite.rel.RelNode |
trim(org.apache.calcite.tools.RelBuilder relBuilder,
org.apache.calcite.rel.RelNode root,
ColumnAccessInfo columnAccessInfo,
Map<HiveProject,Table> viewToTableSchema) |
protected RelFieldTrimmer.TrimResult |
trimChild(org.apache.calcite.rel.RelNode rel,
org.apache.calcite.rel.RelNode input,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
Trims the fields of an input relational expression.
|
RelFieldTrimmer.TrimResult |
trimFields(org.apache.calcite.rel.core.Aggregate aggregate,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
Variant of
RelFieldTrimmer.trimFields(RelNode, ImmutableBitSet, Set) for
LogicalAggregate. |
RelFieldTrimmer.TrimResult |
trimFields(org.apache.calcite.adapter.druid.DruidQuery dq,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
Variant of
RelFieldTrimmer.trimFields(RelNode, ImmutableBitSet, Set) for
DruidQuery. |
RelFieldTrimmer.TrimResult |
trimFields(HiveMultiJoin join,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
|
RelFieldTrimmer.TrimResult |
trimFields(HiveSortExchange exchange,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields) |
RelFieldTrimmer.TrimResult |
trimFields(HiveTableFunctionScan tabFun,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
|
RelFieldTrimmer.TrimResult |
trimFields(HiveTableScan tableAccessRel,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields) |
RelFieldTrimmer.TrimResult |
trimFields(org.apache.calcite.rel.core.Project project,
org.apache.calcite.util.ImmutableBitSet fieldsUsed,
Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
Variant of
RelFieldTrimmer.trimFields(RelNode, ImmutableBitSet, Set) for
LogicalProject. |
createMapping, dispatchTrimFields, dummyProject, trimChildRestore, trimFields, trimFields, trimFields, trimFields, trimFields, trimFields, trimFields, trimFields, trimFieldspublic static HiveRelFieldTrimmer get()
public static HiveRelFieldTrimmer get(boolean fetchStats)
public static HiveRelFieldTrimmer get(boolean fetchStats, boolean useLMFBasedDispatcher)
public org.apache.calcite.rel.RelNode trim(org.apache.calcite.tools.RelBuilder relBuilder,
org.apache.calcite.rel.RelNode root)
We presume that all fields of the relational expression are wanted by its consumer, so only trim fields that are not used within the tree.
trim in class RelFieldTrimmerroot - Root node of relational expressionrelBuilder - Rel builderpublic org.apache.calcite.rel.RelNode trim(org.apache.calcite.tools.RelBuilder relBuilder,
org.apache.calcite.rel.RelNode root,
ColumnAccessInfo columnAccessInfo,
Map<HiveProject,Table> viewToTableSchema)
protected RelFieldTrimmer.TrimResult trimChild(org.apache.calcite.rel.RelNode rel, org.apache.calcite.rel.RelNode input, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
trimChild in class RelFieldTrimmerrel - Relational expressioninput - Input relational expression, whose fields to trimfieldsUsed - Bitmap of fields needed by the consumerpublic RelFieldTrimmer.TrimResult trimFields(HiveMultiJoin join, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
public RelFieldTrimmer.TrimResult trimFields(org.apache.calcite.adapter.druid.DruidQuery dq, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
RelFieldTrimmer.trimFields(RelNode, ImmutableBitSet, Set) for
DruidQuery.public RelFieldTrimmer.TrimResult trimFields(org.apache.calcite.rel.core.Aggregate aggregate, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
RelFieldTrimmerRelFieldTrimmer.trimFields(RelNode, ImmutableBitSet, Set) for
LogicalAggregate.trimFields in class RelFieldTrimmerpublic RelFieldTrimmer.TrimResult trimFields(org.apache.calcite.rel.core.Project project, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
RelFieldTrimmer.trimFields(RelNode, ImmutableBitSet, Set) for
LogicalProject.trimFields in class RelFieldTrimmerpublic RelFieldTrimmer.TrimResult trimFields(HiveTableScan tableAccessRel, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
protected RelFieldTrimmer.TrimResult result(org.apache.calcite.rel.RelNode r, org.apache.calcite.util.mapping.Mapping mapping)
result in class RelFieldTrimmerpublic RelFieldTrimmer.TrimResult trimFields(HiveTableFunctionScan tabFun, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
RelFieldTrimmer.trimFields(RelNode, ImmutableBitSet, Set) for HiveTableFunctionScan.
Copied RelFieldTrimmer.trimFields(
org.apache.calcite.rel.logical.LogicalTableFunctionScan, ImmutableBitSet, Set)
and replaced tabFun to HiveTableFunctionScan.
Proper fix would be implement this in calcite.protected void register(List<Class<? extends org.apache.calcite.rel.RelNode>> nodeClasses) throws Throwable
Throwablepublic static void initializeFieldTrimmerClass(List<Class<? extends org.apache.calcite.rel.RelNode>> nodeClasses)
public RelFieldTrimmer.TrimResult trimFields(HiveSortExchange exchange, org.apache.calcite.util.ImmutableBitSet fieldsUsed, Set<org.apache.calcite.rel.type.RelDataTypeField> extraFields)
Copyright © 2024 The Apache Software Foundation. All rights reserved.