PgSQLAnonymous |
---|
ZeroL |
---|
Но не могу понять, почему при создании типа она не видна. |
1. Она точно есть в целевой базе? 2. У неё точно в целевой базе тип аргумента base_type1 (и если да, то как это Вам удалось, кстати)? |
1. Ага, есть. Проверяли: select pg_catalog.array_out('{"a","b"}'::varchar[])::varchar;
2. Да, так и есть. function array_out("_V_ALL_OPERATOR_CALLS") - такой нет, а array_out(pg_catalog.anyarray) - есть. Но она нам не нужна.
Нашли такой тезис:
7.3 is stricter about the declarations of datatype I/O functions than
prior releases were. Since array_out is declared to take anyarray,
not int4array, the above fails.
You could hack your way to a working datatype by creating extra pg_proc
entries for array_in/_out:
create function int4array_in(cstring) returns int4array
as 'array_in' language internal strict immutable;
create function int4array_out(int4array) returns cstring
as 'array_out' language internal strict immutable;
Но функции-обертки сделать не получилось. Далее научные исследования застопорились, подскажите, в какую сторону копать?
PS Дамп был сделан из 8.4.13, а заливается в 8.4.22.