to_json
jest oznaczony jako STRICT
funkcja, to znaczy - zwracanie NULL, gdy którykolwiek parametr ma wartość NULL. Nie jestem pewien, czy jest to prawidłowa implementacja, może to błąd PostgreSQL.
Aktualizacja:Po dyskusji na liście mailingowej Postgres nie jest to błąd, ale funkcja - sytuacja nie jest prosta, więc oba języki obsługują NULL, ale zachowanie NULL jest trochę inne w każdym z tych języków. Trudno jest zdecydować, czy SQL NULL musi zostać natychmiast przekształcony w JSON NULL i utracić SQL natychmiast. Jeśli potrzebujesz innego zachowania, możesz użyć funkcji SQL:
CREATE OR REPLACE FUNCTION to_json2(anyelement)
RETURNS json AS $$
SELECT COALESCE(to_json($1), json 'null')
$$ LANGUAGE sql;