In realtà questo è vecchio stile sintassi per CROSS JOIN. Equivalente formale:
SELECT
t.json_column->>'x',
nested->>'y'
FROM
my_table t
CROSS JOIN
json_array_elements(t.json_column->'nested') nested;
La query non produce un prodotto cartesiano ma agisce piuttosto come un inner join. Questo perché ha un nascosto riferimento tra due parti di join, in questo caso alias t
. Questo tipo di join è noto come LATERAL JOIN
. Per la documentazione
:
Se una delle parti di un'unione è una funzione, viene considerata laterale per impostazione predefinita.