private static SQLExpr toSqlExpr(String sql) {
    SQLExprParser parser = new ElasticSqlExprParser(sql);
    SQLExpr expr = parser.expr();

    if (parser.getLexer().token() != Token.EOF) {
      throw new ParserException("illegal sql expr : " + sql);
    }

    return expr;
  }
Example #2
0
  public void test_binary() throws Exception {
    SQLExprParser exprParser = new SQLExprParser("AGE > 5");
    SQLBinaryOpExpr binaryOpExpr = (SQLBinaryOpExpr) exprParser.expr();

    Assert.assertEquals(SQLBinaryOperator.GreaterThan, binaryOpExpr.getOperator());

    SQLIdentifierExpr left = (SQLIdentifierExpr) binaryOpExpr.getLeft();
    SQLIntegerExpr right = (SQLIntegerExpr) binaryOpExpr.getRight();

    Assert.assertEquals("AGE", left.getName());
    Assert.assertEquals(5, right.getNumber().intValue());
  }
Example #3
0
  public SQLColumnDefinition parseColumnRest(SQLColumnDefinition column) {
    if (lexer.token() == Token.ON) {
      lexer.nextToken();
      accept(Token.UPDATE);
      SQLExpr expr = this.expr();
      ((MySqlSQLColumnDefinition) column).setOnUpdate(expr);
    }

    if (identifierEquals("AUTO_INCREMENT")) {
      lexer.nextToken();
      if (column instanceof MySqlSQLColumnDefinition) {
        ((MySqlSQLColumnDefinition) column).setAutoIncrement(true);
      }
      return parseColumnRest(column);
    }

    if (identifierEquals("precision")
        && column.getDataType().getName().equalsIgnoreCase("double")) {
      lexer.nextToken();
    }

    if (identifierEquals("PARTITION")) {
      throw new ParserException("syntax error " + lexer.token() + " " + lexer.stringVal());
    }

    if (identifierEquals("COMMENT")) {
      lexer.nextToken();
      column.setComment(lexer.stringVal());
      accept(Token.LITERAL_CHARS);
    }

    super.parseColumnRest(column);

    return column;
  }
Example #4
0
  protected SQLDataType parseDataTypeRest(SQLDataType dataType) {
    super.parseDataTypeRest(dataType);

    if (identifierEquals("UNSIGNED")) {
      lexer.nextToken();
      dataType.getAttributes().put("unsigned", true);
    }

    return dataType;
  }