Flink SQL中使用Calcite作为sql语法解析、校验、优化工具,本篇是实操篇,介绍一下calcite做sql语法解析使用方式。
sql经过calcite解析之后,得到一棵抽象语法树,也就是我们说的AST,这棵语法树是由不同的节点组成,节点称之为SqlNode,根据不同类型的dml、ddl得到不同的类型的SqlNode,例如select语句转换为SqlSelect,delete语句转换为SqlDelete,join语句转换为SqlJoin。
使用方式:SqlParser.Config config = SqlParser.configBuilder() .setLex(Lex.MYSQL) //使用mysql 语法 .build();//SqlParser 语法解析器 SqlParser sqlParser = SqlParser .create("select id,name,age FROM stu where age<20", config);SqlNode sqlNode = null;try { sqlNode = sqlParser.parseStmt();} catch (SqlParseException e) { throw new RuntimeException("", e);}这里解析了一个select的语句,那么得到的sqlNode就是一个SqlSelect。if(SqlKind.SELECT.equals(sqlNode