I would like to help review this documentation. Can you please point me in the right direction? Thanks Steve
On Fri, Jul 19, 2019 at 2:02 AM Alexander Korotkov < a.korot...@postgrespro.ru> wrote: > On Thu, Jul 18, 2019 at 5:08 PM Thom Brown <t...@linux.com> wrote: > > On Tue, 16 Jul 2019 at 19:44, Alexander Korotkov > > <a.korot...@postgrespro.ru> wrote: > > > > > > On Tue, Jul 16, 2019 at 9:22 PM Thom Brown <t...@linux.com> wrote: > > > > Now I'm looking at the @? and @@ operators, and getting a bit > > > > confused. This following query returns true, but I can't determine > > > > why: > > > > > > > > # SELECT '{"a":[1,2,3,4,5]}'::jsonb @? '$.b == "hello"'::jsonpath; > > > > ?column? > > > > ---------- > > > > t > > > > (1 row) > > > > > > > > "b" is not a valid item, so there should be no match. Perhaps it's > my > > > > misunderstanding of how these operators are supposed to work, but the > > > > documentation is quite terse on the behaviour. > > > > > > So, the result of jsonpath evaluation is single value "false". > > > > > > # SELECT jsonb_path_query_array('{"a":[1,2,3,4,5]}'::jsonb, '$.b == > "hello"'); > > > jsonb_path_query_array > > > ------------------------ > > > [false] > > > (1 row) > > > > > > @@ operator checks that result is "true". This is why it returns > "false". > > > > > > @? operator checks if result is not empty. So, it's single "false" > > > value, not empty list. This is why it returns "true". > > > > > > Perhaps, we need to clarify this in docs providing more explanation. > > > > Understood. Thanks. > > > > Also, is there a reason why jsonb_path_query doesn't have an operator > analog? > > The point of existing operator analogues is index support. We > introduced operators for searches we can accelerate using GIN indexes. > > jsonb_path_query() doesn't return bool. So, even if we have an > operator for that, it wouldn't get index support. > > However, we can discuss introduction of operator analogues for other > functions as syntax sugar. > > ------ > Alexander Korotkov > Postgres Professional: http://www.postgrespro.com > The Russian Postgres Company > > >