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