@Override public Boolean visitOrderOperator(OrderOperator op, ILogicalOperator arg) throws AlgebricksException { AbstractLogicalOperator aop = (AbstractLogicalOperator) arg; if (aop.getOperatorTag() != LogicalOperatorTag.ORDER) { return Boolean.FALSE; } OrderOperator orderOpArg = (OrderOperator) copyAndSubstituteVar(op, arg); boolean isomorphic = compareIOrderAndExpressions(op.getOrderExpressions(), orderOpArg.getOrderExpressions()); return isomorphic; }
public static boolean compareWindowPartitionSpec(WindowOperator winOp1, WindowOperator winOp2) { return VariableUtilities.varListEqualUnordered(winOp1.getPartitionExpressions(), winOp2.getPartitionExpressions()) && compareIOrderAndExpressions(winOp1.getOrderExpressions(), winOp2.getOrderExpressions()); }
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(); }