为什么我不能使用预定义的功能?

问题描述

我想使用 optimizer_stats 函数,例如:

select optimizer_stats();

然后它返回

SELECT: no such operator 'optimizer_stats'

但我可以在 sys.functions 表 (id=5976) 中找到它。

我也发现像 reverse(string) 这样的 UDF 也不能使用:

sql>select reverse('abc');
SELECT: no such unary operator 'reverse(char)'

那有什么问题?

解决方法

MonetDB 中的函数绑定在模式中。您无法找到这些函数,因为您当前的架构不是“sys”。将您的会话架构更改为“sys”或使用完整路径(例如 sys.reverse('abc'))。

在默认分支(下一个功能版本)中,我添加了一个“搜索路径”变量,以便在找不到 SQL 对象时搜索其他模式。默认情况下,它包含“sys”架构。