在运行时在服务器节点上找不到自定义SQL函数

时间:2018-10-17 23:24:57

标签: ignite

https://apacheignite-sql.readme.io/docs/custom-sql-functions中所述,在客户端Java应用程序中使用自定义SQL函数对我来说效果很好。但是,将其部署到Ignite服务器节点的lib目录中并通过JDBC通过标准SQL调用时,

“ SQL错误[42000] ...函数...找不到... [90022-195]”。

下面是启动时使用的Ignite配置。

<property name="cacheConfiguration">
        <list>
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                        <property name="name" value="MyFunctions"/>
                        <property name="sqlFunctionClasses" value="MyFunctions"/>
                </bean>
        </list>
</property>

我也尝试过使用缓存名称“ default”,但是存在相同的问题。如果我将自定义SQL函数的缓存名称与表名称相同,则Ignite表示

“缓存配置不匹配(通过Ignite API创建了本地缓存,而通过CREATE TABLE创建了远程缓存):”

Ignite肯定会加载自定义Java jar文件,因为当未部署时,Ignite会说它无法加载自定义类。

查询为

SELECT * FROM Country WHERE sqr(2)> 100;

Ignite服务器节点需要哪些更改才能在通过JDBC发出的SQL语句中使用自定义SQL函数?

谢谢。

1 个答案:

答案 0 :(得分:0)

对于初学者来说,sqlFunctionClasses应该是完全合格的,就像com.your.package.MyFunctions一样。

您还应该将其添加到“国家/地区”缓存中,而不要添加到“我的功能”中。如果确实使用CREATE TABLE创建了Country,则可以尝试在cache template中定义它。例如。您可以使用WITH "TEMPLATE=MyFunctions"