У меня есть оператор SELECT с CASE, который использует функции JSON, который перестал работать при обновлении до PostgreSQL 10.
SELECT
CASE
WHEN type = 'a' THEN data #>> '{key_a,0}'
WHEN type = 'b' THEN data #>> '{key_a,0,key_b,0}'
WHEN type = 'c' THEN jsonb_object_keys(data #> '{key_c,key_d}')
ELSE NULL
END AS foo,
CASE
WHEN type = 'a' THEN jsonb_array_elements_text(data -> 'key_e')
WHEN type = 'b' THEN data #>> '{key_f,0,key_g}'
ELSE NULL
END AS bar
ОШИБКА: функции возврата набора не разрешены в CASE
Подсказка: вы можете переместить функцию возврата набора в элемент LATERAL FROM.
Я не понимаю, как использование LATERAL FROM является альтернативой.На самом деле, я не до конца понимаю, почему LATERAL будет использоваться даже при чтении документов PG (раздел 7.2.1.5) .
Любые идеи о том, как это утверждение будет преобразовано в работус PG 10?