private static JoinNode getJoinNode() { return new JoinNode(new InnerJoinOperatorBase<String, String, String, FlatJoinFunction<String, String, String>>(new DummyFlatJoinFunction<String>(), new BinaryOperatorInformation<String, String, String>(BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.STRING_TYPE_INFO, BasicTypeInfo.STRING_TYPE_INFO), new int[] {1}, new int[] {2}, "join op")); } }
/** * Creates a new JoinNode for the given join operator. * * @param joinOperatorBase The join operator object. */ public JoinNode(InnerJoinOperatorBase<?, ?, ?, ?> joinOperatorBase) { super(joinOperatorBase); this.dataProperties = getDataProperties(joinOperatorBase, joinOperatorBase.getJoinHint(), joinOperatorBase.getCustomPartitioner()); }
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(1); } else { throw new CompilerException();
/** * The default estimates build on the principle of inclusion: The smaller input key domain is included in the larger * input key domain. We also assume that every key from the larger input has one join partner in the smaller input. * The result cardinality is hence the larger one. */ @Override protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics) { long card1 = getFirstPredecessorNode().getEstimatedNumRecords(); long card2 = getSecondPredecessorNode().getEstimatedNumRecords(); this.estimatedNumRecords = (card1 < 0 || card2 < 0) ? -1 : Math.max(card1, card2); if (this.estimatedNumRecords >= 0) { float width1 = getFirstPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width2 = getSecondPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width = (width1 <= 0 || width2 <= 0) ? -1 : width1 + width2; if (width > 0) { this.estimatedOutputSize = (long) (width * this.estimatedNumRecords); } } }
/** * The default estimates build on the principle of inclusion: The smaller input key domain is included in the larger * input key domain. We also assume that every key from the larger input has one join partner in the smaller input. * The result cardinality is hence the larger one. */ @Override protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics) { long card1 = getFirstPredecessorNode().getEstimatedNumRecords(); long card2 = getSecondPredecessorNode().getEstimatedNumRecords(); this.estimatedNumRecords = (card1 < 0 || card2 < 0) ? -1 : Math.max(card1, card2); if (this.estimatedNumRecords >= 0) { float width1 = getFirstPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width2 = getSecondPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width = (width1 <= 0 || width2 <= 0) ? -1 : width1 + width2; if (width > 0) { this.estimatedOutputSize = (long) (width * this.estimatedNumRecords); } } }
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(1); } else { throw new CompilerException();
/** * The default estimates build on the principle of inclusion: The smaller input key domain is included in the larger * input key domain. We also assume that every key from the larger input has one join partner in the smaller input. * The result cardinality is hence the larger one. */ @Override protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics) { long card1 = getFirstPredecessorNode().getEstimatedNumRecords(); long card2 = getSecondPredecessorNode().getEstimatedNumRecords(); this.estimatedNumRecords = (card1 < 0 || card2 < 0) ? -1 : Math.max(card1, card2); if (this.estimatedNumRecords >= 0) { float width1 = getFirstPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width2 = getSecondPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width = (width1 <= 0 || width2 <= 0) ? -1 : width1 + width2; if (width > 0) { this.estimatedOutputSize = (long) (width * this.estimatedNumRecords); } } }
n = new JoinNode((InnerJoinOperatorBase<?, ?, ?, ?>) c);
/** * Creates a new JoinNode for the given join operator. * * @param joinOperatorBase The join operator object. */ public JoinNode(InnerJoinOperatorBase<?, ?, ?, ?> joinOperatorBase) { super(joinOperatorBase); this.dataProperties = getDataProperties(joinOperatorBase, joinOperatorBase.getJoinHint(), joinOperatorBase.getCustomPartitioner()); }
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(1); } else { throw new CompilerException();
/** * The default estimates build on the principle of inclusion: The smaller input key domain is included in the larger * input key domain. We also assume that every key from the larger input has one join partner in the smaller input. * The result cardinality is hence the larger one. */ @Override protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics) { long card1 = getFirstPredecessorNode().getEstimatedNumRecords(); long card2 = getSecondPredecessorNode().getEstimatedNumRecords(); this.estimatedNumRecords = (card1 < 0 || card2 < 0) ? -1 : Math.max(card1, card2); if (this.estimatedNumRecords >= 0) { float width1 = getFirstPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width2 = getSecondPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width = (width1 <= 0 || width2 <= 0) ? -1 : width1 + width2; if (width > 0) { this.estimatedOutputSize = (long) (width * this.estimatedNumRecords); } } }
n = new JoinNode((InnerJoinOperatorBase<?, ?, ?, ?>) c);
/** * Creates a new JoinNode for the given join operator. * * @param joinOperatorBase The join operator object. */ public JoinNode(InnerJoinOperatorBase<?, ?, ?, ?> joinOperatorBase) { super(joinOperatorBase); this.dataProperties = getDataProperties(joinOperatorBase, joinOperatorBase.getJoinHint(), joinOperatorBase.getCustomPartitioner()); }
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(1); } else { throw new CompilerException();
/** * The default estimates build on the principle of inclusion: The smaller input key domain is included in the larger * input key domain. We also assume that every key from the larger input has one join partner in the smaller input. * The result cardinality is hence the larger one. */ @Override protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics) { long card1 = getFirstPredecessorNode().getEstimatedNumRecords(); long card2 = getSecondPredecessorNode().getEstimatedNumRecords(); this.estimatedNumRecords = (card1 < 0 || card2 < 0) ? -1 : Math.max(card1, card2); if (this.estimatedNumRecords >= 0) { float width1 = getFirstPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width2 = getSecondPredecessorNode().getEstimatedAvgWidthPerOutputRecord(); float width = (width1 <= 0 || width2 <= 0) ? -1 : width1 + width2; if (width > 0) { this.estimatedOutputSize = (long) (width * this.estimatedNumRecords); } } }
n = new JoinNode((InnerJoinOperatorBase<?, ?, ?, ?>) c);
/** * Creates a new JoinNode for the given join operator. * * @param joinOperatorBase The join operator object. */ public JoinNode(InnerJoinOperatorBase<?, ?, ?, ?> joinOperatorBase) { super(joinOperatorBase); this.dataProperties = getDataProperties(joinOperatorBase, joinOperatorBase.getJoinHint(), joinOperatorBase.getCustomPartitioner()); }
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(1); } else { throw new CompilerException();
n = new JoinNode((InnerJoinOperatorBase<?, ?, ?, ?>) c);
/** * Creates a new JoinNode for the given join operator. * * @param joinOperatorBase The join operator object. */ public JoinNode(InnerJoinOperatorBase<?, ?, ?, ?> joinOperatorBase) { super(joinOperatorBase); this.dataProperties = getDataProperties(joinOperatorBase, joinOperatorBase.getJoinHint(), joinOperatorBase.getCustomPartitioner()); }