@Override public void postPass(OptimizedPlan plan) { executionConfig = plan.getOriginalPlan().getExecutionConfig(); for (SinkPlanNode sink : plan.getDataSinks()) { traverse(sink); } }
channel.setSerializer(createSerializer(type)); channel.setShipStrategyComparator(createComparator(type, channel.getShipStrategyKeys(), getSortOrders(channel.getShipStrategyKeys(), channel.getShipStrategySortOrder()))); channel.setLocalStrategyComparator(createComparator(type, channel.getLocalStrategyKeys(), getSortOrders(channel.getLocalStrategyKeys(), channel.getLocalStrategySortOrder()))); traverse(channel.getSource());
traverseChannel(inchannel); TypeInformation<?> typeInfo = getTypeInfoFromSource((SourcePlanNode) node); ((SourcePlanNode) node).setSerializer(createSerializer(typeInfo)); traverseChannel(addMapper.getInput()); iterationNode.setSerializerForIterationChannel(createSerializer(operator.getOperatorInfo().getOutputType())); traverseChannel(iterationNode.getInput()); traverse(iterationNode.getRootOfStepFunction()); iterationNode.setSolutionSetSerializer(createSerializer(operator.getOperatorInfo().getFirstInputType())); iterationNode.setWorksetSerializer(createSerializer(operator.getOperatorInfo().getSecondInputType())); iterationNode.setSolutionSetComparator(createComparator(operator.getOperatorInfo().getFirstInputType(), iterationNode.getSolutionSetKeyFields(), getSortOrders(iterationNode.getSolutionSetKeyFields(), null))); traverseChannel(iterationNode.getInput1()); traverseChannel(iterationNode.getInput2()); traverse(iterationNode.getSolutionSetDeltaPlanNode()); traverse(iterationNode.getNextWorkSetPlanNode()); traverseChannel(sn.getInput()); return; } else { sn.setComparator(createComparator(singleInputOperator.getOperatorInfo().getInputType(), sn.getKeys(i), getSortOrders(sn.getKeys(i), sn.getSortOrders(i))), i);
T schema = createEmptySchema(); sn.postPassHelper = schema; getSinkSchema(sn, schema); propagateToChannel(schema, inchannel, createUtilities); ((SourcePlanNode) node).setSerializer(createSerializer(parentSchema, node)); schema = createEmptySchema(); iterationNode.postPassHelper = schema; } else { schema = (T) iterationNode.postPassHelper; schema.increaseNumConnectionsThatContributed(); addSchemaToSchema(parentSchema, schema, iterationNode.getProgramOperator().getName()); if (schema.getNumConnectionsThatContributed() < iterationNode.getOutgoingChannels().size()) { return; traverse(addMapper.getInput().getSource(), createEmptySchema(), false); try { addMapper.getInput().setSerializer(createSerializer(createEmptySchema())); } catch (MissingFieldTypeInfoException e) { throw new RuntimeException(e); traverse(iterationNode.getRootOfStepFunction(), schema, false);
postPasser.postPass(plan);
private void addSchemaToSchema(T sourceSchema, T targetSchema, String opName) { try { for (Map.Entry<Integer, X> entry : sourceSchema) { Integer pos = entry.getKey(); targetSchema.addType(pos, entry.getValue()); } } catch (ConflictingFieldTypeInfoException e) { throw new CompilerPostPassException("Conflicting type information for field " + e.getFieldNumber() + " in node '" + opName + "' propagated from successor node. " + "Conflicting types: " + e.getPreviousType() + " and " + e.getNewType() + ". Most probable cause: Invalid constant field annotations."); } }
private String getConflictingTypeErrorMessage(ConflictingFieldTypeInfoException e, String operatorName) { return "Conflicting type information for field " + e.getFieldNumber() + " in node '" + operatorName + "' between types declared in the node's " + "contract and types inferred from successor contracts. Conflicting types: " + e.getPreviousType() + " and " + e.getNewType() + ". Most probable cause: Invalid constant field annotations."; }
private void propagateToChannel(T schema, Channel channel, boolean createUtilities) throws MissingFieldTypeInfoException { if (createUtilities) { // the serializer always exists channel.setSerializer(createSerializer(schema)); // parameterize the ship strategy if (channel.getShipStrategy().requiresComparator()) { channel.setShipStrategyComparator( createComparator(channel.getShipStrategyKeys(), channel.getShipStrategySortOrder(), schema)); } // parameterize the local strategy if (channel.getLocalStrategy().requiresComparator()) { channel.setLocalStrategyComparator( createComparator(channel.getLocalStrategyKeys(), channel.getLocalStrategySortOrder(), schema)); } } // propagate the channel's source model traverse(channel.getSource(), schema, createUtilities); }
@Override public void postPass(OptimizedPlan plan) { for (SinkPlanNode sink : plan.getDataSinks()) { traverse(sink, null, true); } }
private TypeSerializerFactory<?> createSerializer(T schema, PlanNode node) { try { return createSerializer(schema); } catch (MissingFieldTypeInfoException e) { throw new CompilerPostPassException("Missing type information while creating serializer for '" + node.getProgramOperator().getName() + "'."); } }
channel.setSerializer(createSerializer(type)); channel.setShipStrategyComparator(createComparator(type, channel.getShipStrategyKeys(), getSortOrders(channel.getShipStrategyKeys(), channel.getShipStrategySortOrder()))); channel.setLocalStrategyComparator(createComparator(type, channel.getLocalStrategyKeys(), getSortOrders(channel.getLocalStrategyKeys(), channel.getLocalStrategySortOrder()))); traverse(channel.getSource());
@Override public void postPass(OptimizedPlan plan) { executionConfig = plan.getOriginalPlan().getExecutionConfig(); for (SinkPlanNode sink : plan.getDataSinks()) { traverse(sink); } }
postPasser.postPass(plan);
private void addSchemaToSchema(T sourceSchema, T targetSchema, OptimizerNode optNode, int input) { try { for (Map.Entry<Integer, X> entry : sourceSchema) { Integer pos = entry.getKey(); SemanticProperties sprops = optNode.getSemanticProperties(); if (sprops != null && sprops.getForwardingTargetFields(input, pos) != null && sprops.getForwardingTargetFields(input, pos).contains(pos)) { targetSchema.addType(pos, entry.getValue()); } } } catch (ConflictingFieldTypeInfoException e) { throw new CompilerPostPassException("Conflicting type information for field " + e.getFieldNumber() + " in node '" + optNode.getOperator().getName() + "' propagated from successor node. " + "Conflicting types: " + e.getPreviousType() + " and " + e.getNewType() + ". Most probable cause: Invalid constant field annotations."); } }
channel.setSerializer(createSerializer(type)); channel.setShipStrategyComparator(createComparator(type, channel.getShipStrategyKeys(), getSortOrders(channel.getShipStrategyKeys(), channel.getShipStrategySortOrder()))); channel.setLocalStrategyComparator(createComparator(type, channel.getLocalStrategyKeys(), getSortOrders(channel.getLocalStrategyKeys(), channel.getLocalStrategySortOrder()))); traverse(channel.getSource());
@Override public void postPass(OptimizedPlan plan) { executionConfig = plan.getOriginalPlan().getExecutionConfig(); for (SinkPlanNode sink : plan.getDataSinks()) { traverse(sink); } }
channel.setSerializer(createSerializer(type)); channel.setShipStrategyComparator(createComparator(type, channel.getShipStrategyKeys(), getSortOrders(channel.getShipStrategyKeys(), channel.getShipStrategySortOrder()))); channel.setLocalStrategyComparator(createComparator(type, channel.getLocalStrategyKeys(), getSortOrders(channel.getLocalStrategyKeys(), channel.getLocalStrategySortOrder()))); traverse(channel.getSource());
@Override public void postPass(OptimizedPlan plan) { executionConfig = plan.getOriginalPlan().getExecutionConfig(); for (SinkPlanNode sink : plan.getDataSinks()) { traverse(sink); } }
channel.setSerializer(createSerializer(type)); channel.setShipStrategyComparator(createComparator(type, channel.getShipStrategyKeys(), getSortOrders(channel.getShipStrategyKeys(), channel.getShipStrategySortOrder()))); channel.setLocalStrategyComparator(createComparator(type, channel.getLocalStrategyKeys(), getSortOrders(channel.getLocalStrategyKeys(), channel.getLocalStrategySortOrder()))); traverse(channel.getSource());
@Override public void postPass(OptimizedPlan plan) { executionConfig = plan.getOriginalPlan().getExecutionConfig(); for (SinkPlanNode sink : plan.getDataSinks()) { traverse(sink); } }