[9.5] next question: rls and indexes - Mailing list pgsql-general

From Andreas Kretschmer
Subject [9.5] next question: rls and indexes
Date
Msg-id 20150715083414.GA19143@tux
Whole thread Raw
Responses Re: [9.5] next question: rls and indexes
List pgsql-general
hi @ll,


my table:


test=*# \d rls_test
   Table "public.rls_test"
 Column |  Type   | Modifiers
--------+---------+-----------
 id     | integer |
 name   | text    |
 txt    | text    |
Indexes:
    "idx_name" btree (name)
Policies:
    POLICY "my_policy" FOR ALL
      USING (name = ("current_user"())::text)

test=*# commit;
COMMIT
Time: 0,581 ms
test=# \c - name_66;
You are now connected to database "test" as user "name_66".
test=> explain select * from rls_test ;
                         QUERY PLAN
-------------------------------------------------------------
 Seq Scan on rls_test  (cost=0.00..630.00 rows=91 width=335)
   Filter: (name = ("current_user"())::text)
(2 rows)

Time: 1,531 ms
test=*> set enable_Seqscan to off;
SET
Time: 0,073 ms
test=*> explain select * from rls_test ;
                                  QUERY PLAN
-------------------------------------------------------------------------------
 Seq Scan on rls_test  (cost=10000000000.00..10000000630.00 rows=91
width=335)
   Filter: (name = ("current_user"())::text)
(2 rows)



As you can see, the index isn't in use, but i think, in this case PG
should use it.

I can expand the where with a where, so PG is using the index:


test=*> explain select * from rls_test where name = current_user;
                               QUERY PLAN
------------------------------------------------------------------------
 Bitmap Heap Scan on rls_test  (cost=4.97..232.90 rows=1 width=335)
   Recheck Cond: (name = ("current_user"())::text)
   Filter: (name = ("current_user"())::text)
   ->  Bitmap Index Scan on idx_name  (cost=0.00..4.97 rows=91 width=0)
         Index Cond: (name = ("current_user"())::text)
(5 rows)



USING in a policy isn't using the avalable index.
Bug or Feature?


Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect.                              (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly."   (unknown)
Kaufbach, Saxony, Germany, Europe.              N 51.05082°, E 13.56889°


pgsql-general by date:

Previous
From: Andreas Kretschmer
Date:
Subject: [9.5] question about row level security
Next
From: Albe Laurenz
Date:
Subject: Re: could not fork new process for connection: Resource temporarily unavailable