QueryParser未分析具有除ansi引用的标识符之外的引用标识符的sql语句



我使用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.empidEmpEx

Query解析器没有解析以上三条sql语句。

代码中是否需要任何teiid属性设置或任何其他teiid配置来允许任何类型的引用?

代码中是否需要任何teiid属性设置或任何其他teiid配置来允许任何类型的引用?

目前的简短答案是否定的。对带引号的标识符的解析支持只是ansi标准的双引号。对于您所看到的字符串文字,它是默认的单引号或允许双引号的属性。

如果有一个特定的sql方言您正在尝试获得Teiid支持,您可以看到是否已经存在JIRA问题https://issues.redhat.com/projects/TEIID/issues

很可能,您需要支持的语法不止是替代引用。

相关内容

  • 没有找到相关文章

最新更新