Java 类com.facebook.presto.sql.tree.CurrentTime 实例源码

项目:hue    文件:VeroGoogleAnalyticsExpFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Void context)
{
    StringBuilder builder = new StringBuilder();

    if (node.getType() == CurrentTime.Type.DATE) {
        builder.append("current_date()");
    } else if (node.getType() == CurrentTime.Type.TIME) {
        builder.append("current_timestamp()");
    } else if (node.getType() == CurrentTime.Type.TIMESTAMP) {
        builder.append("current_timestamp()");
    } else {
     builder.append(node.getType().getName());
    }

    return builder.toString();
}
项目:hue    文件:VeroSalesforceExpFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Void context)
{
    StringBuilder builder = new StringBuilder();

    if (node.getType() == CurrentTime.Type.DATE) {
        builder.append("current_date()");
    } else if (node.getType() == CurrentTime.Type.TIME) {
        builder.append("current_timestamp()");
    } else if (node.getType() == CurrentTime.Type.TIMESTAMP) {
        builder.append("current_timestamp()");
    } else {
     builder.append(node.getType().getName());
    }

    return builder.toString();
}
项目:hue    文件:VeroOracleExpFormatter.java   
@Override
      protected String visitCurrentTime(CurrentTime node, Void context)
      {
          StringBuilder builder = new StringBuilder();

          if (node.getType() == CurrentTime.Type.TIME) {
builder.append(CurrentTime.Type.DATE.getName());
          } else {
           builder.append(node.getType().getName());

           if (node.getPrecision() != null) {
               builder.append('(')
                       .append(node.getPrecision())
                       .append(')');
           }
          }

          return builder.toString();
      }
项目:presto    文件:CanonicalizeExpressions.java   
@Override
public Expression rewriteCurrentTime(CurrentTime node, Void context, ExpressionTreeRewriter<Void> treeRewriter)
{
    if (node.getPrecision() != null) {
        throw new UnsupportedOperationException("not yet implemented: non-default precision");
    }

    switch (node.getType()) {
        case DATE:
            return new FunctionCall(new QualifiedName("current_date"), ImmutableList.<Expression>of());
        case TIME:
            return new FunctionCall(new QualifiedName("current_time"), ImmutableList.<Expression>of());
        case LOCALTIME:
            return new FunctionCall(new QualifiedName("localtime"), ImmutableList.<Expression>of());
        case TIMESTAMP:
            return new FunctionCall(new QualifiedName("current_timestamp"), ImmutableList.<Expression>of());
        case LOCALTIMESTAMP:
            return new FunctionCall(new QualifiedName("localtimestamp"), ImmutableList.<Expression>of());
        default:
            throw new UnsupportedOperationException("not yet implemented: " + node.getType());
    }
}
项目:presto    文件:AstBuilder.java   
private static CurrentTime.Type getDateTimeFunctionType(Token token)
{
    switch (token.getType()) {
        case SqlBaseLexer.CURRENT_DATE:
            return CurrentTime.Type.DATE;
        case SqlBaseLexer.CURRENT_TIME:
            return CurrentTime.Type.TIME;
        case SqlBaseLexer.CURRENT_TIMESTAMP:
            return CurrentTime.Type.TIMESTAMP;
        case SqlBaseLexer.LOCALTIME:
            return CurrentTime.Type.LOCALTIME;
        case SqlBaseLexer.LOCALTIMESTAMP:
            return CurrentTime.Type.LOCALTIMESTAMP;
    }

    throw new IllegalArgumentException("Unsupported special function: " + token.getText());
}
项目:hue    文件:VeroFunctions.java   
protected static Expression processFuncLast(ComparisonExpression node) {
    System.out.println("Processing last()");
    Expression rightNode = node.getRight();
    Expression leftNode = node.getLeft();
    FunctionCall last = (FunctionCall) rightNode;
    // # of arguments are already checked outside 1 or 2
    String number = last.getArguments().get(0).toString();
    String format = "DAY"; // default
    if (last.getArguments().size() == 2) {
        format = last.getArguments().get(1).toString().replaceAll("\"", "");
    }

    IntervalLiteral.Sign sign;
    if (number.startsWith("-")) {
        sign = IntervalLiteral.Sign.NEGATIVE;
        number = number.substring(1);
    }
    else {
        sign = IntervalLiteral.Sign.POSITIVE;
    }

    CurrentTime cTime = new CurrentTime(CurrentTime.Type.DATE);
    IntervalLiteral interval = new IntervalLiteral(number, sign, format);
    ArithmeticExpression arithmOp = new ArithmeticExpression(ArithmeticExpression.Type.SUBTRACT, cTime, interval);

    BetweenPredicate bPredicate = new BetweenPredicate(leftNode, arithmOp, cTime);
    return bPredicate;
}
项目:hue    文件:VeroDerbyExpFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Void context)
{
    StringBuilder builder = new StringBuilder();

    builder.append(node.getType().getName());

    return builder.toString();
}
项目:hue    文件:VeroDrillExpFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Void context)
{
    StringBuilder builder = new StringBuilder();

    builder.append(node.getType().getName());

    return builder.toString();
}
项目:hue    文件:VeroGenExpFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Void context)
{
    StringBuilder builder = new StringBuilder();

    builder.append(node.getType().getName());

    if (node.getPrecision() != null) {
        builder.append('(')
                .append(node.getPrecision())
                .append(')');
    }

    return builder.toString();
}
项目:hue    文件:VeroPrestoExpFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Void context)
{
    StringBuilder builder = new StringBuilder();

    builder.append(node.getType().getName());

    return builder.toString();
}
项目:hue    文件:VeroMssqlExpFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Void context)
{
    StringBuilder builder = new StringBuilder();

    if (node.getType() == CurrentTime.Type.DATE) {
        builder.append("convert(date, ").append("current_timestamp").append(")");
    } else if (node.getType() == CurrentTime.Type.TIME) {
        builder.append("convert(time, ").append("current_timestamp").append(")");
    } else {
     builder.append(node.getType().getName());
    }

    return builder.toString();
}
项目:presto-query-formatter    文件:ExpressionFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, StackableAstVisitorContext<Integer> indent)
{
    StringBuilder builder = new StringBuilder();

    builder.append(node.getType().getName());

    if (node.getPrecision() != null) {
        builder.append('(')
                .append(node.getPrecision())
                .append(')');
    }

    return builder.toString();
}
项目:sql4es    文件:WhereParser.java   
/**
 * Extracts the literal value from an expression (if expression is supported)
 * @param expression
 * @param state
 * @return a Long, Boolean, Double or String object
 */
private Object getLiteralValue(Expression expression, QueryState state){
    if(expression instanceof LongLiteral) return ((LongLiteral)expression).getValue();
    else if(expression instanceof BooleanLiteral) return ((BooleanLiteral)expression).getValue();
    else if(expression instanceof DoubleLiteral) return ((DoubleLiteral)expression).getValue();
    else if(expression instanceof StringLiteral) return ((StringLiteral)expression).getValue();
    else if(expression instanceof ArithmeticUnaryExpression){
        ArithmeticUnaryExpression unaryExp = (ArithmeticUnaryExpression)expression;
        Sign sign = unaryExp.getSign();
        Number num = (Number)getLiteralValue(unaryExp.getValue(), state);
        if(sign == Sign.MINUS){
            if(num instanceof Long) return -1*num.longValue();
            else if(num instanceof Double) return -1*num.doubleValue();
            else {
                state.addException("Unsupported numeric literal expression encountered : "+num.getClass());
                return null;
            }
        }
        return num;
    } else if(expression instanceof FunctionCall){
        FunctionCall fc = (FunctionCall)expression;
        if(fc.getName().toString().equals("now")) return new Date();
        else state.addException("Function '"+fc.getName()+"' is not supported");
    }else if(expression instanceof CurrentTime){
        CurrentTime ct = (CurrentTime)expression;
        if(ct.getType() == CurrentTime.Type.DATE) return new LocalDate().toDate();
        else if(ct.getType() == CurrentTime.Type.TIME) return new Date(new LocalTime(DateTimeZone.UTC).getMillisOfDay());
        else if(ct.getType() == CurrentTime.Type.TIMESTAMP) return new Date();
        else if(ct.getType() == CurrentTime.Type.LOCALTIME) return new Date(new LocalTime(DateTimeZone.UTC).getMillisOfDay());
        else if(ct.getType() == CurrentTime.Type.LOCALTIMESTAMP) return new Date();
        else state.addException("CurrentTime function '"+ct.getType()+"' is not supported");

    }else state.addException("Literal type "+expression.getClass().getSimpleName()+" is not supported");
    return null;
}
项目:presto    文件:ExpressionAnalyzer.java   
@Override
protected Type visitCurrentTime(CurrentTime node, StackableAstVisitorContext<AnalysisContext> context)
{
    if (node.getPrecision() != null) {
        throw new SemanticException(NOT_SUPPORTED, node, "non-default precision not yet supported");
    }

    Type type;
    switch (node.getType()) {
        case DATE:
            type = DATE;
            break;
        case TIME:
            type = TIME_WITH_TIME_ZONE;
            break;
        case LOCALTIME:
            type = TIME;
            break;
        case TIMESTAMP:
            type = TIMESTAMP_WITH_TIME_ZONE;
            break;
        case LOCALTIMESTAMP:
            type = TIMESTAMP;
            break;
        default:
            throw new SemanticException(NOT_SUPPORTED, node, "%s not yet supported", node.getType().getName());
    }

    expressionTypes.put(node, type);
    return type;
}
项目:presto    文件:AstBuilder.java   
@Override
public Node visitSpecialDateTimeFunction(SqlBaseParser.SpecialDateTimeFunctionContext context)
{
    CurrentTime.Type type = getDateTimeFunctionType(context.name);

    if (context.precision != null) {
        return new CurrentTime(getLocation(context), type, Integer.parseInt(context.precision.getText()));
    }

    return new CurrentTime(getLocation(context), type);
}
项目:presto    文件:ExpressionFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Boolean unmangleNames)
{
    StringBuilder builder = new StringBuilder();

    builder.append(node.getType().getName());

    if (node.getPrecision() != null) {
        builder.append('(')
                .append(node.getPrecision())
                .append(')');
    }

    return builder.toString();
}
项目:EchoQuery    文件:ExpressionFormatter.java   
@Override
protected String visitCurrentTime(CurrentTime node, Boolean unmangleNames)
{
    StringBuilder builder = new StringBuilder();

    builder.append(node.getType().getName());

    if (node.getPrecision() != null) {
        builder.append('(')
                .append(node.getPrecision())
                .append(')');
    }

    return builder.toString();
}
项目:presto    文件:AggregationAnalyzer.java   
@Override
protected Boolean visitCurrentTime(CurrentTime node, Void context)
{
    return true;
}
项目:presto    文件:TestSqlParser.java   
@Test
public void testCurrentTimestamp()
        throws Exception
{
    assertExpression("CURRENT_TIMESTAMP", new CurrentTime(CurrentTime.Type.TIMESTAMP));
}