5.8 別々のポリシー式がある複数の列が使用されている場合のSQL式のリダクション結果

SQL式で、別々のポリシー式が適用された複数の列が使用されているときは、まずそのSQL式が評価され、そのSQL式の結果は、ユーザーにEXEMPT REDACTION POLICY権限がなくそれらのポリシー式のどれかがTRUEに評価された場合にリダクションされます。

同様に、UNIONUNION ALLINTERSECTMINUSEXCEPTなどの集合演算子のどちらかの側にある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)