BUG #16828: duplicate results when using ** recursive expression in JSON path

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: shammat@gmx.net
Date: 2021-01-17T10:34:50Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      16828
Logged by:          Thomas Kellerer
Email address:      shammat@gmx.net
PostgreSQL version: 13.1
Operating system:   Windows 10, CentOS 8
Description:        

The following query 

  select jsonb_path_query_array(col, '$.**.itemName')
  from (
    values ('{"items": [{"itemName": "a", "items": [{"itemName":
"b"}]}]}'::jsonb)
  ) as t(col) 

returns ["a", "a", "b", "b"] but should return only ["a", "b"] as each value
only appears once in the JSON value. 

This also happens on Postgres 12.x

Commits

  1. Document behavior of the .** jsonpath accessor in the lax mode