@Override public Expr visitUnaryOperator(Object ctx, Stack<Expr> stack, UnaryOperator expr) throws TajoException { stack.push(expr); Expr child = visit(ctx, stack, expr.getChild()); stack.pop(); if (child.getType() == OpType.Literal) { return new NullLiteral(); } String childSql = queries.pop(); StringBuilder sb = new StringBuilder(); if (expr.getType() == OpType.IsNullPredicate) { IsNullPredicate isNullPredicate = (IsNullPredicate) expr; sb.append(childSql); sb.append(" IS "); if (isNullPredicate.isNot()) { sb.append("NOT NULL"); } else { sb.append("NULL"); } } if (!isHiveCatalog) { sb.append(" )"); } queries.push(sb.toString()); return expr; }
@Override public int hashCode() { return getType().hashCode(); }
@Override public Expr visitCommon_value_expression(Common_value_expressionContext ctx) { if (checkIfExist(ctx.NULL())) { return new NullLiteral(); } else { return visitChildren(ctx); } }
@Override public int hashCode() { return getType().hashCode(); }
private Expr buildCaseResult(ResultContext result) { if (result.NULL() != null) { return new NullLiteral(); } else { return visitValue_expression(result.value_expression()); } }
private Expr buildCaseResult(ResultContext result) { if (result.NULL() != null) { return new NullLiteral(); } else { return visitValue_expression(result.value_expression()); } }
@Override public Expr visitCommon_value_expression(Common_value_expressionContext ctx) { if (checkIfExist(ctx.NULL())) { return new NullLiteral(); } else { return visitChildren(ctx); } }
@Override public Expr visitBinaryOperator(Object ctx, Stack<Expr> stack, BinaryOperator expr) throws TajoException { stack.push(expr); Expr lhs = visit(ctx, stack, expr.getLeft()); String leftSql = queries.pop(); Expr rhs = visit(ctx, stack, expr.getRight()); String rightSql = queries.pop(); stack.pop(); if (!expr.getLeft().equals(lhs)) { expr.setLeft(lhs); } if (!expr.getRight().equals(rhs)) { expr.setRight(rhs); } if (lhs.getType() == OpType.Literal && rhs.getType() == OpType.Literal) { return new NullLiteral(); } StringBuilder sb = new StringBuilder(); sb.append(leftSql); sb.append(" ").append(getOperator(expr.getType())).append(" "); sb.append(rightSql); queries.push(sb.toString()); return expr; }
value = new NullLiteral(); break; case BOOLEAN: