我使用org.teiid.query.parser.QueryParser将SQL字符串解析为query对象。它适用于ansi引用的标识符(双引号(。然而,它在解析用方括号、单引号和反引号引用的标识符时抛出错误。
正在获取以下错误:java.lang.Exception:org.teiid.api.Exception.query.QueryParserException:TEID31100分析错误:在第1行第8列遇到"select[*][*]dbo.empid]"。应为:"char"|"date"|"time"|"timestamp"|"cast"|"convert"|"all"|"any"|"array"|"arry_agg"。。。
我是这样使用它的:查询查询=(Query(QueryParser.getQueryParser((.parseCommand(sqlString,new ParseInfo(((;
上面语句中的ParseInfo参数的ANSI_QUOTED_DEFAULT属性为true,因此它能够解析带有双引号标识符的sql字符串。例如:从"dbo"中选择"dbo.empid"。"Emp"Ex">
我的应用程序需要使用下面给出的其他类型的引用来解析SQL字符串。
-
方括号:从[dbo]中选择[dbo.epid]。[Ep][Ex]
-
单引号:从"dbo"中选择"dbo.empid"Emp"Ex">
-
背景信号:从
dbo
中选择dbo.empid
。Emp
Ex
Query解析器没有解析以上三条sql语句。
代码中是否需要任何teiid属性设置或任何其他teiid配置来允许任何类型的引用?
代码中是否需要任何teiid属性设置或任何其他teiid配置来允许任何类型的引用?
目前的简短答案是否定的。对带引号的标识符的解析支持只是ansi标准的双引号。对于您所看到的字符串文字,它是默认的单引号或允许双引号的属性。
如果有一个特定的sql方言您正在尝试获得Teiid支持,您可以看到是否已经存在JIRA问题https://issues.redhat.com/projects/TEIID/issues
很可能,您需要支持的语法不止是替代引用。