1. 什么Sql Parser
所谓Sql Parser, 就是根据某种特定的定义而生成的Sql 语法解析器。 打个比方: 在计算器中输入 1 + 2 =
之所以可以得到结果3是因为是计算器可以准确地根据上述字符解析出相应的输入参数与算法,进而计算到最终的结果。 如果输入的是1 +- 2 =
计算器可能就会提示错误, 这其实就是类似于SQL中提示语法错误,而在处理SQL的过程与处理上面的例子很类似, 可见我们需要定制相应的语法规则进而解析SQL。
2. Java CC
熟悉ANTRL的同学应该知道.g文件的作用, 在Calcite中与之对就是JavaCC(关于什么是JavaCC,可以自行Google), 通过JavaCC文件Calcite可以定义如何去解析传入的SQL语法
3. Calcite 内置语法解析
现在就以一上简单的例子介绍一下Calcite 默认语法解析
SchemaPlus rootSchema = Frameworks.createRootSchema(true);
final FrameworkConfig config = Frameworks.newConfigBuilder()
.parserConfig(SqlParser.configBuilder()
.setParserFactory(SqlParserImpl.FACTORY)
.setCaseSensitive(false)
.setQuoting(Quoting.BACK_TICK)
.setQuotedCasing(Casing.TO_UPPER)