Geoff Winkless <gwinkl...@gmail.com> writes:
> To look at this from the other angle, is there a reason why the jsonb
> indexes don't work with the jsonb_ functions but only with the
> operators? Is this something that could be changed easily?

Yes.  No.  However, if you're desperate, you could make SQL wrapper
functions:

regression=# create function my_jsonb_exists(jsonb, text) returns bool
regression-# language sql as 'select $1 ? $2';
CREATE FUNCTION
regression=# create table foo(f1 jsonb);
CREATE TABLE
regression=# create index on foo using gin(f1);
CREATE INDEX
regression=# explain select * from foo where my_jsonb_exists(f1, 'bar');
                               QUERY PLAN                                
-------------------------------------------------------------------------
 Bitmap Heap Scan on foo  (cost=8.01..12.02 rows=1 width=32)
   Recheck Cond: (f1 ? 'bar'::text)
   ->  Bitmap Index Scan on foo_f1_idx  (cost=0.00..8.01 rows=1 width=0)
         Index Cond: (f1 ? 'bar'::text)
(4 rows)

This works because a simple SQL function like this will get inlined before
any interesting planning decisions are made.

                        regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to