Re: pg_dump and search_path - Mailing list pgsql-general

From Adrian Klaver
Subject Re: pg_dump and search_path
Date
Msg-id 126613fd-e0a9-c79f-a400-028107214439@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 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.

> 
> search_path is not set int he config, but rather with ALTER DATABASE SET 
> search_path TO ... but I have executed that prior to the RESTORE on the 
> target database.  Would it make a difference if I set it in the config?
> 
> Thanks,
> 
> Igal
> 
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: John Lumby
Date:
Subject: Re: REINDEX : new parameter to preserve current average leaf densityas new implicit FILLFACTOR
Next
From: Peter Geoghegan
Date:
Subject: Re: REINDEX : new parameter to preserve current average leaf densityas new implicit FILLFACTOR