Re: pg_dump and search_path - Mailing list pgsql-general
From | Adrian Klaver |
---|---|
Subject | Re: pg_dump and search_path |
Date | |
Msg-id | 9660facc-0bdd-d7fd-8316-02a45a509dd5@aklaver.com Whole thread Raw |
In response to | Re: pg_dump and search_path ("Igal @ Lucee.org" <igal@lucee.org>) |
Responses |
Re: pg_dump and search_path
|
List | pgsql-general |
On 7/9/19 4:24 PM, Igal @ Lucee.org wrote: > On 7/9/2019 10:45 AM, Adrian Klaver wrote: >> On 7/9/19 7:41 AM, Igal @ Lucee.org wrote: >>> On 7/9/2019 7:02 AM, Adrian Klaver wrote: >>>> On 7/8/19 11:48 PM, Igal @ Lucee.org wrote: >>>>> I have a custom search_path: >>>>> >>>>> # show search_path; >>>>> search_path >>>>> ---------------------------------- >>>>> "staging, transient, pg_catalog" >>>>> (1 row) >>>>> >>>>> I ran `pg_dump --schema-only` and the only reference in the output >>>>> to search_path is: >>>>> >>>>> SELECT pg_catalog.set_config('search_path', '', false); >>>>> >>>>> Then one of my functions which does not reference the full name of >>>>> a table with its schema fails with "relation [rel-name] does not >>>>> exist". >>>> >>>> Where is this failing? >>>> >>>> Do you have the search_path set in the config for the server you are >>>> dumping to? >>> >>> It is failing during the Restore operation. I can provide more >>> information if I'll understand what you mean exactly by "Where". >> >> Yes, because I cannot replicate with just a function: >> >> CREATE OR REPLACE FUNCTION public.search_path_test(integer) >> RETURNS integer >> LANGUAGE plpgsql >> AS $function$ >> BEGIN >> perform * from test_tbl; >> RETURN 1; >> END; >> $function$ >> >> test_(postgres)# \d test_tbl >> Table "test_schema.test_tbl" >> Column | Type | Collation | Nullable | Default >> --------+---------+-----------+----------+--------- >> id | integer | >> >> pg_dump -d test -U postgres -x -p 5412 -Fc -f dump_search_path.out >> pg_restore --single-transaction -d test -c -U postgres -p 5412 >> dump_search_path.out >> >> SELECT pg_catalog.set_config('search_path', '', false); >> >> postgres-2019-07-09 10:37:32.488 PDT-604LOG: statement: CREATE >> FUNCTION public.search_path_test(integer) RETURNS integer >> LANGUAGE plpgsql >> AS $$ >> BEGIN >> perform * from test_tbl; >> RETURN 1; >> END; >> $$; >> >> >> >> postgres-2019-07-09 10:37:32.489 PDT-604LOG: statement: ALTER >> FUNCTION public.search_path_test(integer) OWNER TO aklaver; >> >> >> My guess is the function is being used somewhere. > > I see. Yes, the function is used by an INDEX. So somewhere down the > line in the pgdump file I have: > > CREATE INDEX ix_items_tags ON staging.items USING gin > (staging.some_func_returning_array(col1)); Well you are part of the way there, the function is schema qualified:) I will leave it others more knowledgeable on the subject as to whether a function as a GIN expression is a good idea or not. > > Igal > -- Adrian Klaver adrian.klaver@aklaver.com
pgsql-general by date: