Я получаю эту ошибку:
Caused by: org.postgresql.util.PSQLException: ERROR: type
"tool_parse_numbers_record" does not exist
Where: compilation of PL/pgSQL function "tool_parse_numbers" near line 2
Я восстанавливаю свою базу данных в Docker-контейнере следующим образом:
FROM postgres:9.4
ENV POSTGRES_USER iwb
ENV POSTGRES_PASSWORD 1907
ENV POSTGRES_DB iwb
ADD ./1_schema.sql /docker-entrypoint-initdb.d/
ADD ./2_data.sql /docker-entrypoint-initdb.d/
Вот определение типа в файле schema.sql:
CREATE TYPE tool_parse_numbers_record AS (
satir character varying(4000)
);
Вот верхняя часть определения функции в schema.sql:
CREATE FUNCTION tool_parse_numbers(pstr text, pdelimeter text DEFAULT
'|'::text) RETURNS SETOF tool_parse_numbers_record
LANGUAGE plpgsql SECURITY DEFINER
AS $$
DECLARE
И вот как восстанавливается база данных:
CREATE FUNCTION tool_parse_numbers(pstr text, pdelimeter text DEFAULT
'|'::text) RETURNS SETOF tool_parse_numbers_record
LANGUAGE plpgsql SECURITY DEFINER
AS $BODY$
DECLARE
РЕДАКТИРОВАТЬ: Я изменил dockerfile, чтобы создавать типы перед функциями:
ADD ./1_type.sql /docker-entrypoint-initdb.d/
ADD ./2_table.sql /docker-entrypoint-initdb.d/
ADD ./3_func.sql /docker-entrypoint-initdb.d/
ADD ./4_rest_table.sql /docker-entrypoint-initdb.d/
ADD ./5_data.sql /docker-entrypoint-initdb.d/
Как это исправить?