5.8 別々のポリシー式がある複数の列が使用されている場合のSQL式のリダクション結果
SQL式で、別々のポリシー式が適用された複数の列が使用されているときは、まずそのSQL式が評価され、そのSQL式の結果は、ユーザーにEXEMPT REDACTION POLICY
権限がなくそれらのポリシー式のどれかがTRUE
に評価された場合にリダクションされます。
同様に、UNION
、UNION ALL
、INTERSECT
、MINUS
、EXCEPT
などの集合演算子のどちらかの側にあるSELECT
リストに、リダクションされる列が存在する場合、そのSQL式の結果は、ユーザーにEXEMPT REDACTION POLICY
権限がなくそれらのポリシー式のどれかがTRUE
に評価されるとリダクションされます。
たとえば、列1 (c1
)と列2 (c2
)に別々のポリシー式があり、次の問合せが実行されるというシナリオでは、その結果は、列1と列2の両方のポリシー式がFALSE
に評価されないかぎりリダクションされます。これについて、次の表でさらに説明します。
SELECT SUM(c1, c2) sum_c1_c2 FROM t1;
SELECT c1 FROM t1 UNION SELECT c2 FROM t1;
表5-1 列のポリシー式に基づいたSQL式のリダクション結果
c1のポリシー式 | c2のポリシー式 | SQL式の結果 |
---|---|---|
TRUE |
TRUE |
redact(sum(c1,c2)) |
FALSE |
TRUE |
redact(sum(c1,c2)) |
TRUE |
FALSE |
redact(sum(c1,c2)) |
FALSE |
FALSE |
sum(c1,c2) |