From: | Andreas Kretschmer <akretschmer(at)spamfence(dot)net> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | [9.5] next question: rls and indexes |
Date: | 2015-07-15 08:34:14 |
Message-ID: | 20150715083414.GA19143@tux |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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°
From | Date | Subject | |
---|---|---|---|
Next Message | Albe Laurenz | 2015-07-15 08:48:40 | Re: could not fork new process for connection: Resource temporarily unavailable |
Previous Message | Andreas Kretschmer | 2015-07-15 07:55:29 | [9.5] question about row level security |