stringBuilder.append(") "); int frameMaxObjects = op.getFrameMaxObjects(); if (frameMaxObjects != -1) { stringBuilder.append("(frame maxObjects: ").append(frameMaxObjects).append(") ");
public static boolean compareWindowFrameSpec(WindowOperator winOp1, WindowOperator winOp2) { return compareIOrderAndExpressions(winOp1.getFrameValueExpressions(), winOp2.getFrameValueExpressions()) && compareExpressions(winOp1.getFrameStartExpressions(), winOp2.getFrameStartExpressions()) && compareExpressions(winOp1.getFrameEndExpressions(), winOp2.getFrameEndExpressions()) && compareExpressions(winOp1.getFrameExcludeExpressions(), winOp2.getFrameExcludeExpressions()) && winOp1.getFrameExcludeNegationStartIdx() == winOp2.getFrameExcludeNegationStartIdx() && Objects.equals(winOp1.getFrameOffset().getValue(), winOp2.getFrameOffset().getValue()) && winOp1.getFrameMaxObjects() == winOp2.getFrameMaxObjects(); }
@Override public ILogicalOperator visitWindowOperator(WindowOperator op, Void arg) throws AlgebricksException { List<Mutable<ILogicalExpression>> newPartitionExprs = new ArrayList<>(); deepCopyExpressionRefs(op.getPartitionExpressions(), newPartitionExprs); List<Pair<IOrder, Mutable<ILogicalExpression>>> newOrderExprs = deepCopyOrderAndExpression(op.getOrderExpressions()); List<Pair<IOrder, Mutable<ILogicalExpression>>> newFrameValueExprs = deepCopyOrderAndExpression(op.getFrameValueExpressions()); List<Mutable<ILogicalExpression>> newFrameStartExprs = new ArrayList<>(); deepCopyExpressionRefs(newFrameStartExprs, op.getFrameStartExpressions()); List<Mutable<ILogicalExpression>> newFrameEndExprs = new ArrayList<>(); deepCopyExpressionRefs(newFrameEndExprs, op.getFrameEndExpressions()); List<Mutable<ILogicalExpression>> newFrameExclusionExprs = new ArrayList<>(); deepCopyExpressionRefs(newFrameExclusionExprs, op.getFrameExcludeExpressions()); ILogicalExpression newFrameOffset = deepCopyExpressionRef(op.getFrameOffset()).getValue(); List<LogicalVariable> newVariables = new ArrayList<>(); deepCopyVars(newVariables, op.getVariables()); List<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>(); deepCopyExpressionRefs(newExpressions, op.getExpressions()); List<ILogicalPlan> newNestedPlans = new ArrayList<>(); WindowOperator newWinOp = new WindowOperator(newPartitionExprs, newOrderExprs, newFrameValueExprs, newFrameStartExprs, newFrameEndExprs, newFrameExclusionExprs, op.getFrameExcludeNegationStartIdx(), newFrameOffset, op.getFrameMaxObjects(), newVariables, newExpressions, newNestedPlans); for (ILogicalPlan nestedPlan : op.getNestedPlans()) { newNestedPlans.add(OperatorManipulationUtil.deepCopy(nestedPlan, newWinOp)); } return newWinOp; } }
buffer.append(frameOffset.getValue().accept(exprVisitor, indent)); int frameMaxObjects = op.getFrameMaxObjects(); if (frameMaxObjects != -1) { buffer.append(" maxObjects " + frameMaxObjects);
if (useUnboundedRuntime) { runtime = new WindowNestedPlansUnboundedRuntimeFactory(partitionColumnsList, partitionComparatorFactories, orderComparatorFactories, winOp.getFrameMaxObjects(), projectionColumnsExcludingSubplans, runningAggOutColumns, runningAggFactories, aggregatorOutputSchemaSize, nestedAggFactory); frameEndExprEvals, frameExcludeExprEvalsAndComparators.first, winOp.getFrameExcludeNegationStartIdx(), frameExcludeExprEvalsAndComparators.second, frameOffsetExprEval, context.getBinaryIntegerInspectorFactory(), winOp.getFrameMaxObjects(), projectionColumnsExcludingSubplans, runningAggOutColumns, runningAggFactories, aggregatorOutputSchemaSize, nestedAggFactory);
private boolean consolidateNestedPlans(WindowOperator winOpTo, WindowOperator winOpFrom, IOptimizationContext context) throws AlgebricksException { if (winOpTo.hasNestedPlans()) { AggregateOperator aggTo = getAggregateRoot(winOpTo.getNestedPlans()); if (aggTo == null) { return false; } AggregateOperator aggFrom = getAggregateRoot(winOpFrom.getNestedPlans()); if (aggFrom == null) { return false; } if (!IsomorphismUtilities.isOperatorIsomorphicPlanSegment(aggTo.getInputs().get(0).getValue(), aggFrom.getInputs().get(0).getValue())) { return false; } aggTo.getVariables().addAll(aggFrom.getVariables()); aggTo.getExpressions().addAll(aggFrom.getExpressions()); context.computeAndSetTypeEnvironmentForOperator(aggTo); } else { setAll(winOpTo.getNestedPlans(), winOpFrom.getNestedPlans()); setAll(winOpTo.getFrameValueExpressions(), winOpFrom.getFrameValueExpressions()); setAll(winOpTo.getFrameStartExpressions(), winOpFrom.getFrameStartExpressions()); setAll(winOpTo.getFrameEndExpressions(), winOpFrom.getFrameEndExpressions()); setAll(winOpTo.getFrameExcludeExpressions(), winOpFrom.getFrameExcludeExpressions()); winOpTo.setFrameExcludeNegationStartIdx(winOpFrom.getFrameExcludeNegationStartIdx()); winOpTo.getFrameOffset().setValue(winOpFrom.getFrameOffset().getValue()); winOpTo.setFrameMaxObjects(winOpFrom.getFrameMaxObjects()); } return true; }
pprintExpr(frameOffset, indent); int frameMaxObjects = op.getFrameMaxObjects(); if (frameMaxObjects != -1) { buffer.append(",\n");
@Override public ILogicalOperator visitWindowOperator(WindowOperator op, ILogicalOperator arg) throws AlgebricksException { List<Mutable<ILogicalExpression>> partitionExprCopy = exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getPartitionExpressions()); List<Pair<OrderOperator.IOrder, Mutable<ILogicalExpression>>> orderExprCopy = deepCopyOrderExpressionReferencePairList(op.getOrderExpressions()); List<Pair<OrderOperator.IOrder, Mutable<ILogicalExpression>>> frameValueExprCopy = deepCopyOrderExpressionReferencePairList(op.getFrameValueExpressions()); List<Mutable<ILogicalExpression>> frameStartExprCopy = exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getFrameStartExpressions()); List<Mutable<ILogicalExpression>> frameEndExprCopy = exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getFrameEndExpressions()); List<Mutable<ILogicalExpression>> frameExclusionExprCopy = exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getFrameExcludeExpressions()); ILogicalExpression frameOffsetCopy = exprDeepCopyVisitor.deepCopy(op.getFrameOffset().getValue()); List<LogicalVariable> varCopy = deepCopyVariableList(op.getVariables()); List<Mutable<ILogicalExpression>> exprCopy = exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getExpressions()); List<ILogicalPlan> nestedPlansCopy = new ArrayList<>(); WindowOperator opCopy = new WindowOperator(partitionExprCopy, orderExprCopy, frameValueExprCopy, frameStartExprCopy, frameEndExprCopy, frameExclusionExprCopy, op.getFrameExcludeNegationStartIdx(), frameOffsetCopy, op.getFrameMaxObjects(), varCopy, exprCopy, nestedPlansCopy); deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy); deepCopyPlanList(op.getNestedPlans(), nestedPlansCopy, opCopy); return opCopy; }