Что такое тип данных аргумента to_regclass в версии 9.6?

Я использую эту часть для проверки таблицы, существующей в версии 9.5, и она отлично работает:

do $$
declare v text;
begin
    SELECT to_regclass(('some'||'table')::cstring) into v;
    raise notice '%', v;
end;
$$ language plpgsql

Теперь я работаю с другой (удаленной) базой данных с версией 9.6, и этот код дает ошибку:

функция to_regclass(cstring) не существует

Итак, что такое тип данных аргумента для функции to_regclass() в postgres 9.6?


person Oto Shavadze    schedule 07.10.2017    source источник


Ответы (1)


В Postgres 9.6 аргументом to_regclass() является text (в более ранних версиях это cstring).

Из документации:

Заставить функции to_reg*() принимать тип text, а не cstring (Петр Коробейников)

Это позволяет избежать необходимости писать явное приведение типов в большинстве случаев, когда аргумент не является простой литеральной константой.

Простое приведение текстового выражения к regclass должно работать в обеих версиях:

SELECT ('some'||'table')::regclass into v;
person klin    schedule 07.10.2017