Я использую коммьюнити версию DBeaver и, возможно, ошибка связана с ним.
Пробую создать функцию:
CREATE OR REPLACE FUNCTION dao_subject.get_salt_by_contacts_s(p_props json)
RETURNS varchar
LANGUAGE plpgsql
AS $function$
DECLARE
l_result varchar;
l_email TEXT := p_props ->> 'email';
l_mobile_phone TEXT := p_props ->> 'mobilePhone';
BEGIN
SELECT s.password_salt INTO l_result FROM dao_subject.subject s
WHERE s.email = l_email
OR s.mobile_phone = l_mobile_phone;
RETURN l_result;
END;
$function$
;
И получаю ошибку:
SQL Error [42601]: Unterminated dollar quote started at position 0 in SQL $function$
;. Expected terminating $$
Заменяю экранирование $function$ на $$ и функция успешно создается, хотя синтаксически эти конструкции равноправны.
Затем открываю новую консоль, тупо копирую код только что созданной функции, пробую выполнить и снова та же ошибка. С другими функциями порядок.
Пока единственная догадка, что DBeaver в каких-то случаях некорректно кодирует некоторые символы и постгрес их не видит