Ошибка аутентификации в postgres после создания пользователя функцией и заданием числового пароля

Создаю пользователя БД postgres функцией:

CREATE OR REPLACE FUNCTION public.create_databaseuser(
username name,
pass text)
RETURNS smallint
LANGUAGE 'plpgsql'
COST 100
VOLATILE STRICT SECURITY DEFINER PARALLEL UNSAFE
AS $BODY$
declare
begin
execute format('CREATE USER "%I" with password ''%I'' 
                LOGIN 
                NOSUPERUSER 
                INHERIT 
                NOCREATEDB 
                NOCREATEROLE 
                REPLICATION ;', username, pass);
return 1;
exception 
when others then
    return 0;
end;
$BODY$;
ALTER FUNCTION public.create_databaseuser(name, text)
OWNER TO postgres;

Вызываю функцию, задаю пароль цифрой:

SELECT public.create_databaseuser('sid',  '1');

При попытке подключиться пишет:

Server [localhost]: 192.168.1.10
Database [postgres]: bd1
Port [5432]:
Username [postgres]: sid
Пароль пользователя sid:
psql: сервер неожиданно закрыл соединение
Скорее всего сервер прекратил работу из-за сбоя
до или в процессе выполнения запроса.
Для продолжения нажмите любую клавишу . . .

но если указать пароль который начинается с буквы w1, например, все нормально. Самое интересное, если исполнить строку

CREATE USER sid with password '1';

Все прекрасно работает. Я не правильно передаю значение пароля?


Ответы (1 шт):

Автор решения: Nogood
execute format('CREATE USER ' || username || ' with password '''|| pass ||
                ''' LOGIN 
                NOSUPERUSER 
                INHERIT 
                NOCREATEDB 
                NOCREATEROLE 
                REPLICATION ;');
→ Ссылка