/** * 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) {
/** * 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); } } }
/** * 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) {
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) {
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) {
if (mn.getFirstPredecessorNode() == solutionSetNode) { mn.makeJoinWithSolutionSet(0); } else if (mn.getSecondPredecessorNode() == solutionSetNode) {