【发布时间】:2020-05-18 11:28:31
【问题描述】:
我正在使用 Teiid 的查询解析器。对于我在下面给出的代码中使用的 sql,虽然标识符是 ansi-quoted,但查询解析器并没有正确地将它们拆分为 schema、tableName 和 FieldName。
这是我的代码:
String sqlToParse = "Select "dbo.mydbo"."employee.info".id from "dbo.mydbo"."employee.info""
Query query = (Query)QueryParser.getQueryParser().parseCommand(sqlToParse, new ParseInfo());
在上面的sql中:
架构名称是 dbo.mydbo
表名是employee.info
字段名是id
在解析期间,Teiid Parser 似乎首先删除了双引号,之后完全限定的字段名称将变为 dbo.mydbo.employee.info.id。 在此之后,它基于 dot(.)
进行拆分第一个点之前的字符串被视为 GroupSymbol.qualifier(schema name): dbo
最后一个点后的字符串作为 ElementSymbol.shortName(field name): id
第一个和最后一个点之间的其余字符串被视为 GroupSymbol.shortName(table name): mydbo.employee.info
上述拆分给出了不正确的结果。引用标识符时,拆分应考虑引号。
我的代码中是否缺少某些内容,或者 ParseInfo 中是否缺少某些设置,因为 Teiid 解析器在拆分标识符时没有考虑引号。
【问题讨论】:
标签: teiid