Come commentato in questa risposta,
SELECT (j->'i')::int FROM (SELECT '{"i":null}'::jsonb) t(j); -- fail
risultati in "ERRORE: impossibile eseguire il cast jsonb null di tipo integer"... Ok, questo è il "PostgreSQL via", ma perché non fare di meglio? Meglio che aggiungere CASE
clausole, che sta facendo il "naturale" e la cosa, che è la fusione in JSON-valore NULL ad un SQL digitato il valore null. Così, non è un problema di implementazione, ma sembra una specificazione bug in PostregSQL: com'è?