最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

presto - How parse PrestoTrino create table query with apache Calcite? - Stack Overflow

programmeradmin1浏览0评论

Consider the code:

import .apache.calcite.config.Lex;
import .apache.calcite.sql.SqlNode;
import .apache.calcite.sql.parser.SqlParser;
import .apache.calcite.sql.parser.ddl.SqlDdlParserImpl;
import .apache.calcite.sql.validate.SqlConformanceEnum;

public class CalciteSample {
  public static void main(String[] args) throws Exception  {
    String sql = "create table catalog.my_db.mytable\n"
        + "\n"
        + "  WITH (format = 'PARQUET',\n"
        + "    location = 's3a://mybucket/prefix/table')\n"
        + "as (\n"
        + "     WITH\n"
        + "      acbc as (\n"
        + "        select 1\n"
        + "  )\n"
        + "  select \n"
        + ")\n";
    SqlParser.Config sqlParserConfig = SqlParser.configBuilder()
        .setParserFactory(SqlDdlParserImpl.FACTORY)
        .setConformance(SqlConformanceEnum.PRESTO)
        .build();
    SqlParser parser = SqlParser.create(sql, sqlParserConfig);
    SqlNode sqlNode = parser.parseQuery();
    System.out.println("ok");
  }
}

That code throws:

Exception in thread "main" .apache.calcite.sql.parser.SqlParseException: Encountered "WITH" at line 3, column 3.
Was expecting one of:
    <EOF> 
    "AS" ...
    "LIKE" ...
    "(" ...
    "." ...
    
    at .apache.calcite.sql.parser.ddl.SqlDdlParserImpl.convertException(SqlDdlParserImpl.java:419)
    at .apache.calcite.sql.parser.ddl.SqlDdlParserImpl.normalizeException(SqlDdlParserImpl.java:165)
    at .apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:159)
    at .apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:174)
    at com.nsheremet.trino.update.checker.dumper.CalciteSample.main(CalciteSample.java:34)
Caused by: .apache.calcite.sql.parser.ddl.ParseException: Encountered "WITH" at line 3, column 3.
Was expecting one of:
    <EOF> 
    "AS" ...
    "LIKE" ...
    "(" ...
    "." ...
    
    at .apache.calcite.sql.parser.ddl.SqlDdlParserImpl.generateParseException(SqlDdlParserImpl.java:45760)
    at .apache.calcite.sql.parser.ddl.SqlDdlParserImpl.jj_consume_token(SqlDdlParserImpl.java:45571)
    at .apache.calcite.sql.parser.ddl.SqlDdlParserImpl.SqlStmtEof(SqlDdlParserImpl.java:4195)
    at .apache.calcite.sql.parser.ddl.SqlDdlParserImpl.parseSqlStmtEof(SqlDdlParserImpl.java:213)
    at .apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:172)
    ... 1 more
    

Any ideas how parse complex create table as queries?

发布评论

评论列表(0)

  1. 暂无评论