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° -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general