У меня есть CTE удаления-вставки, который не удается странным образом

Вот пример этого успеха:

with x as ( 
    delete from common.companies where id = '0f8ed160-370a-47bb-b4bf-2dcf79100a52' 
    returning row_to_json(companies) as old_data, null as new_data, 'common.companies' as model, id, 'delete' as action)
insert into edit_history (old_data, new_data, model, model_pk, action, submitter)
select old_data, null, model, id, action, '0b392013-f680-45a6-b19a-34f3d42d0120' from x;

INSERT 0 1

Обратите внимание, что второй столбец в insert-select имеет значение explicity null.

Вот пример, который терпит неудачу:

with x as (
    delete from common.companies where id = '160d7ef2-807c-4fe0-bfed-7d282c031610' 
    returning row_to_json(companies) as old_data, null as new_data, 'common.companies' as model, id, 'delete' as action)
insert into edit_history (old_data, new_data, model, model_pk, action, submitter)                                                                   
select old_data, new_data, model, id, action, '0b392013-f680-45a6-b19a-34f3d42d0120' from x;

ERROR:  failed to find conversion function from unknown to json

Обратите внимание, что в этом примере вместо явного значения NULL во втором столбцеnew_data, который возвращается как ноль из оператора удаления.

Если оба значения равны NULL, почему второй пример обманывает меня этой ошибкой? Я прошел через оба тщательно, и это единственная функциональная разница.

Ответы на вопрос(2)

Ваш ответ на вопрос