我正在使用 org.teiid.query.parser.QueryParser 将 SQL 字符串解析为 Query 对象。它适用于 ansi 引用的标识符(双引号)。但是,在解析用方括号、单引号和反引号引用的标识符时会引发错误。
出现以下错误:java.lang.Exception: org.teiid.api.exception.query.QueryParserException: TEIID31100 解析错误:在第 1 行第 8 列遇到“select [*][[*]dbo.empid]”。是期待:“字符”| “日期” | “时间” | “时间戳” | “投” | “转换” | “全部” | “任何” | "数组" | “array_agg” ...
这就是我使用它的方式: Query query = (Query)QueryParser.getQueryParser().parseCommand(sqlString, new ParseInfo());
上述语句中的 ParseInfo 参数将 ANSI_QUOTED_DEFAULT 属性设置为 true,因此它能够解析带有双引号标识符的 sql 字符串。例如:从“dbo”中选择“dbo.empid”。“Emp”“Ex”
我的应用程序需要使用其他类型的引用来解析 SQL 字符串,如下所示。
方括号:选择 [dbo.empid] From [dbo].[Emp] [Ex]
单引号:从 'dbo'.'Emp' 'Ex' 中选择 'dbo.empid'
反引号:
dbo.empid
从中选择dbo
。Emp
Ex
Query解析器没有解析上述三个sql语句。
代码中是否需要任何 teiid 属性设置或任何其他 teiid 配置以允许任何类型的引用?