雪花云数据平台雪花使用系统$get_tag_on_current_column和is_role_in_session不起


create or replace masking policy test as (val string) returns string ->
case when
system$get_tag_on_current_column('tag_db.tags.a') is null OR is_role_in_session('some_prefix_' || system$get_tag_on_current_column('tag_db.tags.a'))
then val
else '**MASKED**' end;

失败:

invalid argument for function [IS_ROLE_IN_SESSION] unexpected argument [null] at position 0,

一些背景:

select is_role_in_session('foo' || NULL)

返回null,所以看起来get_tag_on_current_column返回null。。

但这没有任何意义?

所以,如果以上都不起作用,我该如何表达"仅当列已分配标签";?

尝试将OR语句拆分为2个WHEN语句,标记一在is_role_in_session之前。

当标记为null时,第一个When将为true,因此第二个When语句不会运行,因此不会出现null值错误。

最新更新