to_json
е маркиран като STRICT
функция, тя е средна - връща NULL, когато някой параметър е NULL. Не съм сигурен дали внедряването е правилно, може би е грешка в PostgreSQL.
Актуализация:След обсъждане в пощенския списък на Postgres това не е грешката, а функцията - ситуацията не е проста поради факта, така че и двата езика поддържат NULL, но поведението на NULL е малко по-различно във всеки от тези езици. Трудно е да се реши дали SQL NULL трябва незабавно да се трансформира в JSON NULL и загубата на SQL да се държи незабавно. Ако имате нужда от различно поведение, можете да използвате SQL функция:
CREATE OR REPLACE FUNCTION to_json2(anyelement)
RETURNS json AS $$
SELECT COALESCE(to_json($1), json 'null')
$$ LANGUAGE sql;