add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
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