RE: BUG #15248: pg_upgrade fails when a function with an emptysearch_path is encountered

Поиск
Список
Период
Сортировка
От Steven Winfield
Тема RE: BUG #15248: pg_upgrade fails when a function with an emptysearch_path is encountered
Дата
Msg-id E9FA92C2921F31408041863B74EE4C2001AEF9CFB2@CCPMAILDAG03.cantab.local
обсуждение исходный текст
Ответ на BUG #15248: pg_upgrade fails when a function with an emptysearch_path is encountered  (PG Bug reporting form <noreply@postgresql.org>)
Список pgsql-bugs


-----Original Message-----
From: PG Bug reporting form [mailto:noreply@postgresql.org]
Sent: 19 June 2018 12:18
To: pgsql-bugs@lists.postgresql.org
Cc: Steven Winfield
Subject: BUG #15248: pg_upgrade fails when a function with an empty search_path is encountered
 
The following bug has been logged on the website:
 
Bug reference:      15248
Logged by:          Steven Winfield
Email address:      steven.winfield@cantabcapital.com
PostgreSQL version: 11beta1
Operating system:   RHEL 7.4
Description:       
 
I suspect this is reproducible with pg_dump / pg_restore too.
 
If a function is defined like this:
 
CREATE FUNCTION public.foo(int) RETURNS int
    LANGUAGE "sql"
    SET search_path TO ''
    AS $_$ SELECT 1; $_$;
 
...then, during pg_upgrade, pg_restore renders this SQL to recreate the
function using double-quotes around the empty search_path:
 
pg_restore: creating FUNCTION "public.foo("int")"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3488; 1255 67351571
FUNCTION foo("int") dbadmin
pg_restore: [archiver (db)] could not execute query: ERROR:  zero-length
delimited identifier at or near """"
LINE 3:     SET "search_path" TO ""
                                 ^
    Command was: CREATE FUNCTION "public"."foo"("int") RETURNS int
    LANGUAGE "sql"
    SET "search_path" TO ""
    AS $_$ SELECT 1 $_$
 
The fix is to use single quotes in this case, and I suppose the workaround
is to specify 'pg_temp,pg_catalog' instead of the empty string.
 
 
Also, either pg_get_functiondef is similarly affected, or pg_dump/pg_restore is using that that to generate the SQL containing the double quotes.
 
 


This email is confidential. If you are not the intended recipient, please advise us immediately and delete this message. The registered name of Cantab- part of GAM Systematic is Cantab Capital Partners LLP. See - http://www.gam.com/en/Legal/Email+disclosures+EU for further information on confidentiality, the risks of non-secure electronic communication, and certain disclosures which we are required to make in accordance with applicable legislation and regulations. If you cannot access this link, please notify us by reply message and we will send the contents to you.

GAM Holding AG and its subsidiaries (Cantab – GAM Systematic) will collect and use information about you in the course of your interactions with us. Full details about the data types we collect and what we use this for and your related rights is set out in our online privacy policy at https://www.gam.com/en/legal/privacy-policy. Please familiarise yourself with this policy and check it from time to time for updates as it supplements this notice

В списке pgsql-bugs по дате отправления:

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #15248: pg_upgrade fails when a function with an emptysearch_path is encountered
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #15247: At 'ALTER TABLE ADD COLUMN fast default' , Set attmissingval to NULL in the pg_attribute, query fail