BinaryOperator greaterThanOrEquals = AlgebraicUtil.findTopExpr(resultExpr, OpType.GreaterThanOrEquals); assertNotNull(greaterThanOrEquals); assertEquals(LiteralValue.LiteralType.Unsigned_Float, greaterThanOrEqualsRight.getValueType()); BinaryOperator lessThanOrEquals = AlgebraicUtil.findTopExpr(resultExpr, OpType.LessThanOrEquals); assertNotNull(lessThanOrEquals); assertEquals(LiteralValue.LiteralType.Unsigned_Float, lessThanOrEqualsRight.getValueType()); BinaryOperator lessThan = AlgebraicUtil.findTopExpr(resultExpr, OpType.LessThan); assertNotNull(lessThan); BinaryOperator topExpr = AlgebraicUtil.findTopExpr(resultExpr, OpType.Or); assertEquals(leftExpr, topExpr.getLeft()); assertEquals(lessThan, topExpr.getRight());
@Test public final void testBinaryOperator2() throws CloneNotSupportedException, TajoException { QueryContext qc = createQueryContext(); Expr expr = sqlAnalyzer.parse(QUERIES[1]); LogicalPlan plan = planner.createPlan(qc, expr); LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); ScanNode scanNode = PlannerUtil.findTopNode(node, NodeType.SCAN); EvalNodeToExprConverter convertor = new EvalNodeToExprConverter(scanNode.getTableName()); convertor.visit(null, scanNode.getQual(), new Stack<>()); Expr resultExpr = convertor.getResult(); BinaryOperator equals = AlgebraicUtil.findTopExpr(resultExpr, OpType.Equals); assertNotNull(equals); ColumnReferenceExpr column = equals.getLeft(); assertEquals("default.region", column.getQualifier()); assertEquals("r_name", column.getName()); LiteralValue literalValue = equals.getRight(); assertEquals("EUROPE", literalValue.getValue()); assertEquals(LiteralValue.LiteralType.String, literalValue.getValueType()); }
@Test public final void testBinaryOperator1() throws CloneNotSupportedException, TajoException { QueryContext qc = createQueryContext(); Expr expr = sqlAnalyzer.parse(QUERIES[0]); LogicalPlan plan = planner.createPlan(qc, expr); LogicalOptimizer optimizer = new LogicalOptimizer(util.getConfiguration(), catalog, TablespaceManager.getInstance()); optimizer.optimize(plan); LogicalNode node = plan.getRootBlock().getRoot(); ScanNode scanNode = PlannerUtil.findTopNode(node, NodeType.SCAN); EvalNodeToExprConverter convertor = new EvalNodeToExprConverter(scanNode.getTableName()); convertor.visit(null, scanNode.getQual(), new Stack<>()); Expr resultExpr = convertor.getResult(); BinaryOperator binaryOperator = AlgebraicUtil.findTopExpr(resultExpr, OpType.GreaterThan); assertNotNull(binaryOperator); ColumnReferenceExpr column = binaryOperator.getLeft(); assertEquals("default.lineitem", column.getQualifier()); assertEquals("l_orderkey", column.getName()); LiteralValue literalValue = binaryOperator.getRight(); assertEquals("500", literalValue.getValue()); assertEquals(LiteralValue.LiteralType.Unsigned_Integer, literalValue.getValueType()); }
BetweenPredicate between = AlgebraicUtil.findTopExpr(resultExpr, OpType.Between); assertFalse(between.isNot()); assertFalse(between.isSymmetric()); assertEquals(LiteralValue.LiteralType.Unsigned_Integer, end.getValueType()); BinaryOperator equals = AlgebraicUtil.findTopExpr(resultExpr, OpType.Equals); assertNotNull(equals); assertEquals(LiteralValue.LiteralType.String, equalsRight.getValueType()); InPredicate inPredicate = AlgebraicUtil.findTopExpr(resultExpr, OpType.InPredicate); assertNotNull(inPredicate);
BinaryOperator binaryOperator = AlgebraicUtil.findTopExpr(resultExpr, OpType.LessThan); assertNotNull(binaryOperator); ColumnReferenceExpr column = binaryOperator.getLeft(); assertEquals(LiteralValue.LiteralType.Unsigned_Integer, literalValue.getValueType()); BetweenPredicate between = AlgebraicUtil.findTopExpr(resultExpr, OpType.Between); assertFalse(between.isNot()); assertFalse(between.isSymmetric());
CaseWhenPredicate caseWhen = AlgebraicUtil.findTopExpr(resultExpr, OpType.CaseWhen); assertNotNull(caseWhen);