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?.
select jsonb_pretty('{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb);
jsonb_pretty
{
    "k1": "v1",
    "k2": [
        "v21",
        "v22",
        "v23"
    ]
}
SELECT 1
--not allowed
select "k2"
from '{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb;
ERROR:  syntax error at or near "'{"k1":"v1", "k2":["v21","v22","v23"]}'"
LINE 3: from '{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb;
             ^
--kind of makes sense
select "value"
from jsonb_each('{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb)
where "key"='k2';
value
["v21", "v22", "v23"]
SELECT 1
--access by subscript
select ('{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb)['k2'];
jsonb
["v21", "v22", "v23"]
SELECT 1
select (select "value"
from jsonb_each('{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb)
where "key"='k2') ? 'v22';
?column?
t
SELECT 1
select ('{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb)['k2'] ? 'v22';
?column?
t
SELECT 1
select jsonb_path_exists('{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb,
'$.k2[*] ? (@==$var)',
'{"var":"v22"}');
jsonb_path_exists
t
SELECT 1
DO $$
DECLARE PAYLOAD jsonb;
BEGIN
SELECT '{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb into PAYLOAD;
CREATE TABLE test AS SELECT "PAYLOAD";--not allowed
END $$;
ERROR:  column "PAYLOAD" does not exist
LINE 1: CREATE TABLE test AS SELECT "PAYLOAD"
                                    ^
QUERY:  CREATE TABLE test AS SELECT "PAYLOAD"
CONTEXT:  PL/pgSQL function inline_code_block line 5 at SQL statement
DO $$
DECLARE PAYLOAD jsonb;
BEGIN
SELECT '{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb into PAYLOAD;
CREATE TABLE test AS SELECT "k2" FROM "PAYLOAD";--not allowed either
END $$;
ERROR:  relation "PAYLOAD" does not exist
LINE 1: CREATE TABLE test AS SELECT "k2" FROM "PAYLOAD"
                                              ^
QUERY:  CREATE TABLE test AS SELECT "k2" FROM "PAYLOAD"
CONTEXT:  PL/pgSQL function inline_code_block line 5 at SQL statement
DO $$
DECLARE PAYLOAD jsonb;
BEGIN
SELECT '{"k1":"v1", "k2":["v21","v22","v23"]}'::jsonb INTO PAYLOAD;
CREATE TABLE test AS SELECT PAYLOAD['k2'];--OK
END $$;

SELECT * FROM test;
DO
payload
["v21", "v22", "v23"]
SELECT 1