У меня есть функция Postgresql 9.6 (и postgis 2.5), которая вычисляет json с параметрами, основанными на геометрии записи. Я создал поле json и записал там результат вычисления json, и все было хорошо.
UPDATE public.recordtable
SET polygoncalc = public.fn_calculate_polygon(5)
WHERE id = 5;
Когда я пытаюсь запустить его на Postgres 11.2, он возвращает ошибку:
SQL Error [0A000]:ERROR: set-returning functions are not allowed in UPDATE
На основании этой ссылки Я понимаю, что в postgresql произошли изменения, но, честно говоря,
как я могу записать json в поле в Postgres 11.2 без получения ошибки?
Заранее спасибо.
РЕДАКТИРОВАТЬ: я изменил поле вывода на тип json и добавил текст функции
the function:
CREATE OR REPLACE FUNCTION public.fn_create_jsn_point(pid double precision)
RETURNS TABLE(jsn json)
LANGUAGE plpgsql
AS $function$
DECLARE
p_id double precision = pid;
myjson json = null ;
begin
return QUERY
select row_to_json(finaljson)
from(
select
ST_x(a.wgs_84_dump_point) as X,
ST_y(a.wgs_84_dump_point) as Y
(
select (st_transform(st_centroid(t.geom),4326)) wgs_84_dump_point
from baserecords t where base_id = p_id
) a ) finaljson;
END;
$function$
;