kingbase中指定用户默认查找schema,或曰用户无法使用public schema下函数问题

Posted 左直拳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kingbase中指定用户默认查找schema,或曰用户无法使用public schema下函数问题相关的知识,希望对你有一定的参考价值。

kingbase有一些古怪的设置,search_path就是其中一例。这个命令是设置用户默认的schema。如果不设置,比如用户user1想读取schema2下的表,那在sql中就要指明schema。如:

select * from schema2.table1;

如果不想这么折腾,那就将schema2指定为user1的默认schema:

alter user user1 set search_path to schema2;

但是!以上这个句子有问题!会造成user1的默认schema只是schema2,从而丢失了公共schema public的默认访问权。其实这个search_path和windows环境变量中的path类似,它可以指定多个。上面指定了一个,覆盖了默认,原本天然可以访问public下元素的,现在就不行了。前不久,我们有个kingbase库安装了kingbaseGIS,加入了对空间数据的支持。而这些空间函数,位于public下:


结果执行下面SQL,死活不行,总是报错,认不了这个ST_Polygon。

SELECT ST_Polygon(ST_GeomFromText(
   'LINESTRING(75.15 29.53,77 29,77.6 29.5, 75.15 29.53)'),
4326);

将用户的权限赋到无所不能了,还是不行。后来还是人大金仓的人发现了问题症结所在,就是这个seach_path问题。正确的做法是:

alter user user1 set search_path to schema2,PUBLIC,SYS_CATALOG;

kingbase源自postgreSQL。估计这个毛病是继承下来的。这个search_path简直莫名其妙,不知所谓。

以上是关于kingbase中指定用户默认查找schema,或曰用户无法使用public schema下函数问题的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Amplify 的 schema.graphql 中指定 2 个带有身份验证注释的 Cognito 用户池?

在 iOS 中指定默认通知样式

Android - 自定义样式中指定的边距未生效

如何在 QT Designer 中指定默认文本光标小部件

如何在 XIB 中指定左、右或标题视图按钮

如何根据它在 Java 中指定的版本规范验证 json 模式