You can try the sql parser of Apache Flink, which supports the "ALTER TABLE
... ADD COLUMN ..." syntax. [1]

[1]
https://github.com/apache/flink/blob/master/flink-table/flink-sql-parser/src/test/java/org/apache/flink/sql/parser/FlinkSqlParserImplTest.java

xiao cai <[email protected]> 于2020年11月4日周三 下午4:25写道:

> Hi Liya:
>
>
> Althrough that can not meet my needs,but it still helps me a lot, thank
> you very much for your reply.
>
>
> Best,
> Xiao.
>
>
>  原始邮件
> 发件人: Fan Liya<[email protected]>
> 收件人: dev<[email protected]>
> 发送时间: 2020年11月4日(周三) 11:35
> 主题: Re: How to parse sql of DDL
>
>
> Hi Xiao, I am not sure if we support "alter table ... add column ... after
> ..." statement, as some databases do not support this syntax. We do support
> "alter table ... add column ..." statement. An example can be found in
> MultiJdbcSchemaJoinTest#testSchemaConsistency, which may be helpful. Best,
> Liya Fan On Wed, Nov 4, 2020 at 10:53 AM xiao cai <[email protected]>
> wrote: > Hi Liya: > Thanks for your suggestion! > > > Here is the demo i
> ran using SqlParser: > > > -------------- > String sql = "ALTER TABLE
> `test`.`mysql_sink_test_1` ADD COLUMN > `col_for_test` varchar(255) NULL
> AFTER `col_binary_1`; > SqlParser.Config mysqlConfig = >
> SqlParser.configBuilder().setLex(Lex.MYSQL).build(); > SqlParser sqlParser
> = SqlParser.create(sql.toLowerCase(), mysqlConfig); > SqlNode sqlNode =
> sqlParser.parseStmt(); > -------------- > > > Then I received the following
> error message: > > > --------------------- >
> org.apache.calcite.sql.parser.SqlParseException: Encountered "table" at >
> line 1, column 7. > Was expecting one of: > "SESSION" ... > "SYSTEM" ... >
> at >
> org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserImpl.java:364)
> > at >
> org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParserImpl.java:149)
> > at >
> org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:148)
> > at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:163)
> > at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:188)
> > ——————————— > > > > > > > 原始邮件 > 发件人: Fan Liya<[email protected]> >
> 收件人: dev<[email protected]> > 发送时间: 2020年11月4日(周三) 10:40 > 主题: Re:
> How to parse sql of DDL > > > Hi Xiao, It's hard to diagnose the problem
> without seeing your code. My > suggestion is that you can debug some test
> cases in our code base (related > to SqlParser), and check how it works.
> Best, Liya Fan On Wed, Nov 4, 2020 > at 10:34 AM xiao cai <[email protected]>
> wrote: > Hi > I just want to konw > how to parse the sql statement of DDL.
> I had use > SqlParser to do this, > but it was failed. > Is someone can
> help me , thank you very mush. > > > > Best xiao.

Reply via email to