Quanlong Huang created IMPALA-10484:
---------------------------------------

             Summary: Support using unrelated collection columns of a table 
containing row-filtering policies
                 Key: IMPALA-10484
                 URL: https://issues.apache.org/jira/browse/IMPALA-10484
             Project: IMPALA
          Issue Type: New Feature
          Components: Security
    Affects Versions: Impala 4.0
            Reporter: Quanlong Huang


This is a follow-up for IMPALA-9234. Row-filtering policies are applied as the 
WHERE clause of the table masking view of the base table/view. E.g. if table 
"tblA" contains a row-filtering policy "id=0", the original query "{{select * 
from tblA join tblB on (id)}}" will be analyzed as
{code:sql}
select * from (
  select col1, col2, ..., colN from tblA where id = 0
) v join tblB on (id)
{code}
Tables containing complex types are more complex in analyzing. Let's say "tblA" 
contains two columns:
||id int||int_array array<int>||
|0|[1,2,3]|
|1|[4,5]|

The following queries gets all items of the array column:
{code:sql}
-- Good for applying table masking view on tblA
select a.item from tblA t, t.int_array a;

-- Hard to apply table masking view on tblA
select item from tblA.int_array;
{code}
The second query uses unrelated collection column directly. So we can't apply 
the row-filtering policies on the base table. This will leak data, so 
IMPALA-9234 forbids them.

We can support this by rewritting the second query to the first one. Luckily, 
we already have a rewritter containing this ability: {{AcidRewriter}} in 
{{StmtRewriter}}. With some refactor it can be reused. However, there is a bug 
(IMPALA-10482) needs to be fixed first.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to