Skip to content

Commit

Permalink
Change TranslationMap to use VariableReferenceExpression
Browse files Browse the repository at this point in the history
  • Loading branch information
rongrong committed Jun 11, 2019
1 parent 0628799 commit 64d3bec
Show file tree
Hide file tree
Showing 22 changed files with 193 additions and 213 deletions.
Expand Up @@ -910,10 +910,10 @@ public PhysicalOperation visitWindow(WindowNode node, LocalExecutionPlanContext


Frame frame = entry.getValue().getFrame(); Frame frame = entry.getValue().getFrame();
if (frame.getStartValue().isPresent()) { if (frame.getStartValue().isPresent()) {
frameStartChannel = Optional.of(source.getLayout().get(frame.getStartValue().get())); frameStartChannel = Optional.of(source.getLayout().get(new Symbol(frame.getStartValue().get().getName())));
} }
if (frame.getEndValue().isPresent()) { if (frame.getEndValue().isPresent()) {
frameEndChannel = Optional.of(source.getLayout().get(frame.getEndValue().get())); frameEndChannel = Optional.of(source.getLayout().get(new Symbol(frame.getEndValue().get().getName())));
} }


FrameInfo frameInfo = new FrameInfo(frame.getType(), frame.getStartType(), frameStartChannel, frame.getEndType(), frameEndChannel); FrameInfo frameInfo = new FrameInfo(frame.getType(), frame.getStartType(), frameStartChannel, frame.getEndType(), frameEndChannel);
Expand Down Expand Up @@ -2226,7 +2226,7 @@ public PhysicalOperation visitTableWriter(TableWriterNode node, LocalExecutionPl
}).orElse(new DevNullOperatorFactory(context.getNextOperatorId(), node.getId())); }).orElse(new DevNullOperatorFactory(context.getNextOperatorId(), node.getId()));


List<Integer> inputChannels = node.getColumns().stream() List<Integer> inputChannels = node.getColumns().stream()
.map(source::symbolToChannel) .map(source::variableToChannel)
.collect(toImmutableList()); .collect(toImmutableList());


OperatorFactory operatorFactory = new TableWriterOperatorFactory( OperatorFactory operatorFactory = new TableWriterOperatorFactory(
Expand Down Expand Up @@ -2942,10 +2942,11 @@ private static List<Type> toTypes(Map<Symbol, Integer> layout, LocalExecutionPla
.collect(toImmutableList()); .collect(toImmutableList());
} }


public int symbolToChannel(Symbol input) private int variableToChannel(VariableReferenceExpression input)
{ {
checkArgument(layout.containsKey(input)); Symbol symbol = new Symbol(input.getName());
return layout.get(input); checkArgument(layout.containsKey(symbol));
return layout.get(symbol);
} }


public List<Type> getTypes() public List<Type> getTypes()
Expand Down
Expand Up @@ -457,7 +457,7 @@ private RelationPlan createTableWriterPlan(
symbolAllocator.newVariable("partialrows", BIGINT), symbolAllocator.newVariable("partialrows", BIGINT),
symbolAllocator.newVariable("fragment", VARBINARY), symbolAllocator.newVariable("fragment", VARBINARY),
symbolAllocator.newVariable("tablecommitcontext", VARBINARY), symbolAllocator.newVariable("tablecommitcontext", VARBINARY),
plan.getFieldSymbolMappings(), plan.getFieldMappings(),
columnNames, columnNames,
partitioningScheme, partitioningScheme,
Optional.of(partialAggregation), Optional.of(partialAggregation),
Expand All @@ -483,7 +483,7 @@ private RelationPlan createTableWriterPlan(
symbolAllocator.newVariable("partialrows", BIGINT), symbolAllocator.newVariable("partialrows", BIGINT),
symbolAllocator.newVariable("fragment", VARBINARY), symbolAllocator.newVariable("fragment", VARBINARY),
symbolAllocator.newVariable("tablecommitcontext", VARBINARY), symbolAllocator.newVariable("tablecommitcontext", VARBINARY),
plan.getFieldSymbolMappings(), plan.getFieldMappings(),
columnNames, columnNames,
partitioningScheme, partitioningScheme,
Optional.empty(), Optional.empty(),
Expand All @@ -497,7 +497,7 @@ private RelationPlan createTableWriterPlan(


private RelationPlan createDeletePlan(Analysis analysis, Delete node) private RelationPlan createDeletePlan(Analysis analysis, Delete node)
{ {
DeleteNode deleteNode = new QueryPlanner(analysis, symbolAllocator, idAllocator, buildLambdaDeclarationToSymbolMap(analysis, symbolAllocator), metadata, session) DeleteNode deleteNode = new QueryPlanner(analysis, symbolAllocator, idAllocator, buildLambdaDeclarationToVariableMap(analysis, symbolAllocator), metadata, session)
.plan(node); .plan(node);


TableFinishNode commitNode = new TableFinishNode( TableFinishNode commitNode = new TableFinishNode(
Expand Down Expand Up @@ -536,7 +536,7 @@ private PlanNode createOutputPlan(RelationPlan plan, Analysis analysis)


private RelationPlan createRelationPlan(Analysis analysis, Query query) private RelationPlan createRelationPlan(Analysis analysis, Query query)
{ {
return new RelationPlanner(analysis, symbolAllocator, idAllocator, buildLambdaDeclarationToSymbolMap(analysis, symbolAllocator), metadata, session) return new RelationPlanner(analysis, symbolAllocator, idAllocator, buildLambdaDeclarationToVariableMap(analysis, symbolAllocator), metadata, session)
.process(query, null); .process(query, null);
} }


Expand Down Expand Up @@ -568,9 +568,9 @@ private static List<ColumnMetadata> getOutputTableColumns(RelationPlan plan, Opt
return columns.build(); return columns.build();
} }


private static Map<NodeRef<LambdaArgumentDeclaration>, Symbol> buildLambdaDeclarationToSymbolMap(Analysis analysis, SymbolAllocator symbolAllocator) private static Map<NodeRef<LambdaArgumentDeclaration>, VariableReferenceExpression> buildLambdaDeclarationToVariableMap(Analysis analysis, SymbolAllocator symbolAllocator)
{ {
Map<NodeRef<LambdaArgumentDeclaration>, Symbol> resultMap = new LinkedHashMap<>(); Map<NodeRef<LambdaArgumentDeclaration>, VariableReferenceExpression> resultMap = new LinkedHashMap<>();
for (Entry<NodeRef<Expression>, Type> entry : analysis.getTypes().entrySet()) { for (Entry<NodeRef<Expression>, Type> entry : analysis.getTypes().entrySet()) {
if (!(entry.getKey().getNode() instanceof LambdaArgumentDeclaration)) { if (!(entry.getKey().getNode() instanceof LambdaArgumentDeclaration)) {
continue; continue;
Expand All @@ -579,7 +579,7 @@ private static Map<NodeRef<LambdaArgumentDeclaration>, Symbol> buildLambdaDeclar
if (resultMap.containsKey(lambdaArgumentDeclaration)) { if (resultMap.containsKey(lambdaArgumentDeclaration)) {
continue; continue;
} }
resultMap.put(lambdaArgumentDeclaration, symbolAllocator.newSymbol(lambdaArgumentDeclaration.getNode(), entry.getValue())); resultMap.put(lambdaArgumentDeclaration, symbolAllocator.newVariable(lambdaArgumentDeclaration.getNode(), entry.getValue()));
} }
return resultMap; return resultMap;
} }
Expand Down
Expand Up @@ -46,7 +46,7 @@ public PlanBuilder(TranslationMap translations, PlanNode root, List<Expression>


public TranslationMap copyTranslations() public TranslationMap copyTranslations()
{ {
TranslationMap translations = new TranslationMap(getRelationPlan(), getAnalysis(), getTranslations().getLambdaDeclarationToSymbolMap()); TranslationMap translations = new TranslationMap(getRelationPlan(), getAnalysis(), getTranslations().getLambdaDeclarationToVariableMap());
translations.copyMappingsFrom(getTranslations()); translations.copyMappingsFrom(getTranslations());
return translations; return translations;
} }
Expand Down Expand Up @@ -76,14 +76,14 @@ public boolean canTranslate(Expression expression)
return translations.containsSymbol(expression); return translations.containsSymbol(expression);
} }


public Symbol translate(Expression expression) public VariableReferenceExpression translate(Expression expression)
{ {
return translations.get(expression); return translations.get(expression);
} }


public VariableReferenceExpression translateToVariable(Expression expression) public VariableReferenceExpression translateToVariable(Expression expression)
{ {
return translations.getVariable(expression); return translations.get(expression);
} }


public Expression rewrite(Expression expression) public Expression rewrite(Expression expression)
Expand All @@ -107,14 +107,14 @@ public PlanBuilder appendProjections(Iterable<Expression> expressions, SymbolAll
projections.put(symbolAllocator.toVariableReference(symbol), symbol.toSymbolReference()); projections.put(symbolAllocator.toVariableReference(symbol), symbol.toSymbolReference());
} }


ImmutableMap.Builder<Symbol, Expression> newTranslations = ImmutableMap.builder(); ImmutableMap.Builder<VariableReferenceExpression, Expression> newTranslations = ImmutableMap.builder();
for (Expression expression : expressions) { for (Expression expression : expressions) {
VariableReferenceExpression variable = symbolAllocator.newVariable(expression, getAnalysis().getTypeWithCoercions(expression)); VariableReferenceExpression variable = symbolAllocator.newVariable(expression, getAnalysis().getTypeWithCoercions(expression));
projections.put(variable, translations.rewrite(expression)); projections.put(variable, translations.rewrite(expression));
newTranslations.put(new Symbol(variable.getName()), expression); newTranslations.put(variable, expression);
} }
// Now append the new translations into the TranslationMap // Now append the new translations into the TranslationMap
for (Map.Entry<Symbol, Expression> entry : newTranslations.build().entrySet()) { for (Map.Entry<VariableReferenceExpression, Expression> entry : newTranslations.build().entrySet()) {
translations.put(entry.getValue(), entry.getKey()); translations.put(entry.getValue(), entry.getKey());
} }


Expand Down
Expand Up @@ -724,7 +724,7 @@ private TableFinishNode createTemporaryTableWrite(
symbolAllocator.newVariable("partialrows", BIGINT), symbolAllocator.newVariable("partialrows", BIGINT),
symbolAllocator.newVariable("fragment", VARBINARY), symbolAllocator.newVariable("fragment", VARBINARY),
symbolAllocator.newVariable("tablecommitcontext", VARBINARY), symbolAllocator.newVariable("tablecommitcontext", VARBINARY),
outputs.stream().map(VariableReferenceExpression::getName).map(Symbol::new).collect(toImmutableList()), outputs,
outputColumnNames, outputColumnNames,
Optional.of(new PartitioningScheme( Optional.of(new PartitioningScheme(
Partitioning.create(partitioningHandle, partitioningVariables), Partitioning.create(partitioningHandle, partitioningVariables),
Expand Down

0 comments on commit 64d3bec

Please sign in to comment.