Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,13 @@ public PlanFragment visitPhysicalFileScan(PhysicalFileScan fileScan, PlanTransla
fileScan.getTableSample().get().sampleValue, fileScan.getTableSample().get().seek));
}
break;
case HUDI:
// HUDI table should be handled by visitPhysicalHudiScan, not here.
// If we reach here, it means LogicalHudiScan was incorrectly converted to
// PhysicalFileScan.
throw new RuntimeException("HUDI table should use PhysicalHudiScan instead of PhysicalFileScan. "
+ "This indicates a bug in the optimizer rules. "
+ "FileScan class: " + fileScan.getClass().getSimpleName());
default:
throw new RuntimeException("do not support DLA type " + ((HMSExternalTable) table).getDlaType());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,31 @@ protected LogicalHudiScan(RelationId id, ExternalTable table, List<String> quali
List<NamedExpression> virtualColumns,
Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties,
String tableAlias,
Optional<List<Slot>> cachedOutputs) {
super(id, table, qualifier, selectedPartitions, operativeSlots, virtualColumns,
tableSample, tableSnapshot, scanParams, groupExpression, logicalProperties, "", cachedOutputs);
tableSample, tableSnapshot, scanParams, groupExpression, logicalProperties, tableAlias, cachedOutputs);
Objects.requireNonNull(scanParams, "scanParams should not null");
Objects.requireNonNull(incrementalRelation, "incrementalRelation should not null");
this.incrementalRelation = incrementalRelation;
}

/**
* Constructor for LogicalHudiScan (backward compatibility without tableAlias).
*/
protected LogicalHudiScan(RelationId id, ExternalTable table, List<String> qualifier,
SelectedPartitions selectedPartitions, Optional<TableSample> tableSample,
Optional<TableSnapshot> tableSnapshot,
Optional<TableScanParams> scanParams, Optional<IncrementalRelation> incrementalRelation,
Collection<Slot> operativeSlots,
List<NamedExpression> virtualColumns,
Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties,
Optional<List<Slot>> cachedOutputs) {
this(id, table, qualifier, selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, groupExpression, logicalProperties, "", cachedOutputs);
}

public LogicalHudiScan(RelationId id, ExternalTable table, List<String> qualifier,
Collection<Slot> operativeSlots, Optional<TableScanParams> scanParams,
Optional<TableSample> tableSample, Optional<TableSnapshot> tableSnapshot,
Expand Down Expand Up @@ -142,28 +159,32 @@ public String toString() {
public LogicalHudiScan withGroupExpression(Optional<GroupExpression> groupExpression) {
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs);
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()),
tableAlias, cachedOutputs);
}

@Override
public Plan withGroupExprLogicalPropChildren(Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties, List<Plan> children) {
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, groupExpression, logicalProperties, cachedOutputs);
operativeSlots, virtualColumns, groupExpression, logicalProperties,
tableAlias, cachedOutputs);
}

public LogicalHudiScan withSelectedPartitions(SelectedPartitions selectedPartitions) {
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs);
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()),
tableAlias, cachedOutputs);
}

@Override
public LogicalHudiScan withRelationId(RelationId relationId) {
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs);
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()),
tableAlias, cachedOutputs);
}

@Override
Expand All @@ -172,10 +193,27 @@ public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
}

@Override
public LogicalFileScan withOperativeSlots(Collection<Slot> operativeSlots) {
public LogicalHudiScan withOperativeSlots(Collection<Slot> operativeSlots) {
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()),
tableAlias, cachedOutputs);
}

@Override
public LogicalHudiScan withTableAlias(String tableAlias) {
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, Optional.empty(), Optional.of(getLogicalProperties()),
tableAlias, cachedOutputs);
}

@Override
public LogicalHudiScan withCachedOutput(List<Slot> cachedOutputs) {
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation,
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs);
operativeSlots, virtualColumns, groupExpression, Optional.empty(),
tableAlias, Optional.of(cachedOutputs));
}

/**
Expand Down Expand Up @@ -228,6 +266,7 @@ public LogicalHudiScan withScanParams(HMSExternalTable table, Optional<TableScan
}
return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier,
selectedPartitions, tableSample, tableSnapshot, scanParams, newIncrementalRelation,
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs);
operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()),
tableAlias, cachedOutputs);
}
}
Loading