By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE
INSERT 0 11
CREATE INDEX
| id | jdata |
|---|---|
| 1 | {"name": "Somedata", "array": [{"attr": "somevalue", "name": "bla1"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 2 | {"name": "Somedata", "array": [{"attr": null, "name": "bla0"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 5 | {"name": "Somedata", "array": [{"name": "bla0", "non-attr": "somevalue"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}, [{"attr": "somevalue", "name": "bla1"}]], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
SELECT 3
| id | jdata |
|---|---|
| 1 | {"name": "Somedata", "array": [{"attr": "somevalue", "name": "bla1"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 2 | {"name": "Somedata", "array": [{"attr": null, "name": "bla0"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 5 | {"name": "Somedata", "array": [{"name": "bla0", "non-attr": "somevalue"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}, [{"attr": "somevalue", "name": "bla1"}]], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
SELECT 3
| id | jdata |
|---|---|
| 1 | {"name": "Somedata", "array": [{"attr": "somevalue", "name": "bla1"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 2 | {"name": "Somedata", "array": [{"attr": null, "name": "bla0"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
SELECT 2
| id | jdata |
|---|---|
| 1 | {"name": "Somedata", "array": [{"attr": "somevalue", "name": "bla1"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 2 | {"name": "Somedata", "array": [{"attr": null, "name": "bla0"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 5 | {"name": "Somedata", "array": [{"name": "bla0", "non-attr": "somevalue"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}, [{"attr": "somevalue", "name": "bla1"}]], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 6 | {"array": [{"name": "bla0", "non-attr": "somevalue"}, {"nested": {"attr": "somevalue", "name": "bla1"}}]} |
| 7 | {"array": [{"name": "bla0", "non-attr": "somevalue"}, {"nested": [{"attr": "somevalue", "name": "bla1"}]}]} |
| 9 | {"array": [{"name": "bla0", "non-attr": "somevalue"}, {"nested": [{"foo": [{"attr": "bar"}], "name": "bla1"}]}]} |
| 10 | {"array": [{"name": "bla0", "non-attr": "somevalue"}, [[[{"attr": "bar"}]]]]} |
| 11 | {"array": [{"name": "bla0", "non-attr": "somevalue"}, [[{"bar": [{"attr": "bar"}], "foo": 1}]]]} |
SELECT 8
| id | jdata |
|---|---|
| 4 | {"name": "Somedata", "array": [{"name": "bla0", "non-attr": "somevalue"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}, "attr"], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
SELECT 1
| id | jdata |
|---|---|
| 4 | {"name": "Somedata", "array": [{"name": "bla0", "non-attr": "somevalue"}, {"name": "bla2", "otherdata": "somevalue2"}, {"name": "bla3", "otherdata": "somevalue"}, "attr"], "array2": ["bla21", "bla20", "bla22", "bla23"], "otherstuff": "stuff"} |
| 8 | {"array": [{"name": "bla0", "non-attr": "somevalue"}, {"nested": [{"foo": ["attr"], "name": "bla1"}]}]} |
SELECT 2
SET
| QUERY PLAN |
|---|
| Bitmap Heap Scan on tbl (cost=68.00..72.02 rows=1 width=36) |
| Recheck Cond: ((jdata -> 'array'::text) @? 'strict $.**?(exists (@."attr"))'::jsonpath) |
| -> Bitmap Index Scan on tbl_jdata_array_idx (cost=0.00..68.00 rows=1 width=0) |
| Index Cond: ((jdata -> 'array'::text) @? 'strict $.**?(exists (@."attr"))'::jsonpath) |
EXPLAIN
| QUERY PLAN |
|---|
| Bitmap Heap Scan on tbl (cost=12.00..16.02 rows=1 width=36) |
| Recheck Cond: ((jdata -> 'array'::text) @? 'strict $.**?(@ == "attr")'::jsonpath) |
| -> Bitmap Index Scan on tbl_jdata_array_idx (cost=0.00..12.00 rows=1 width=0) |
| Index Cond: ((jdata -> 'array'::text) @? 'strict $.**?(@ == "attr")'::jsonpath) |
EXPLAIN