有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Apache Calcite SqlParser因某些Postgres关键字而失败

我正在使用Calcite的SqlParser,但我在Postgres查询中遇到了一些问题,即PRIMARYTIMEZONE没有被正确解析。下面是我正在使用的代码:

import org.apache.calcite.sql.parser.SqlParser;
import org.apache.calcite.sql.ddl.SqlCreateTable;

SqlParser.Config sqlParserConfig = SqlParser
    .configBuilder()
    .setParserFactory(SqlDdlParserImpl.FACTORY)
    .build();
String sql = "CREATE TABLE \"elements_elementcomponent\" (\"id\" bigserial NOT NULL, \"created_at\" timestamp with time zone NOT NULL, \"updated_at\" timestamp with time zone NOT NULL, \"version\" double precision NOT NULL, \"git_sha\" varchar(60) NOT NULL, \"element_id\" bigint NULL, \"element_item_id\" bigint NULL, \"element_basket_id\" bigint NULL);";
SqlParser parser = SqlParser.create(sql, sqlParserConfig);
SqlCreateTable stmt = (SqlCreateTable) parser.parseQuery();

出现以下带有上述关键字的错误:

org.apache.calcite.sql.parser.SqlParseException: Encountered "PRIMARY" at line 1, column 69.
Was expecting one of:
    "AS" ...
    "DEFAULT" ...
    "GENERATED" ...
    ")" ...
    "," ...
    
    at org.apache.calcite.sql.parser.ddl.SqlDdlParserImpl.convertException(SqlDdlParserImpl.java:394)
    at org.apache.calcite.sql.parser.ddl.SqlDdlParserImpl.normalizeException(SqlDdlParserImpl.java:157)
    at org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:140)
    at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:155)
    at .(#110:1)

我不确定为什么会发生这种情况,因为这些关键字在Apache Calcite - SQL language - Keywords中似乎受支持


共 (0) 个答案