RE: Behavior of pg_catalog dependent on search_path: expected or bug? - Mailing list pgsql-bugs

From ldh@laurent-hasson.com
Subject RE: Behavior of pg_catalog dependent on search_path: expected or bug?
Date
Msg-id MN2PR15MB2560F57876BE91AB8A49ADDF85DA9@MN2PR15MB2560.namprd15.prod.outlook.com
Whole thread Raw
In response to Re: Behavior of pg_catalog dependent on search_path: expected or bug?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs

   >  -----Original Message-----
   >  From: Tom Lane <tgl@sss.pgh.pa.us>
   >  Sent: Sunday, February 5, 2023 00:35
   >  To: ldh@laurent-hasson.com
   >  Cc: pgsql-bugs@lists.postgresql.org
   >  Subject: Re: Behavior of pg_catalog dependent on search_path: expected
   >  or bug?
   >  
   >  "ldh@laurent-hasson.com" <ldh@laurent-hasson.com> writes:
   >  > This code however works (adding public to the search_path):
   >  
   >  > SET search_path TO XXX, public;
   >  > select p.oid::regprocedure
   >  >   from pg_catalog.pg_proc p
   >  >   join pg_catalog.pg_namespace n on p.pronamespace = n.oid  where
   >  > p.oid::regprocedure::text='sample(anyelement)'
   >  >    and n.nspname = 'public'
   >  
   >  The problem is that what regprocedure-to-text produces is search path
   >  dependent: it might be 'sample(anyelement)', or it might be
   >  'public.sample(anyelement)', depending on whether public is in the
   >  search path.
   >  
   >  You could perhaps write an OR to try both of those possibilities, but the
   >  whole query seems quite ugly and probably slow, and an OR would make
   >  it even slower.  Personally I'd try something like
   >  
   >    exists(select 1
   >           from pg_catalog.pg_proc p
   >           join pg_catalog.pg_namespace n on p.pronamespace = n.oid
   >           where n.nspname = 'public'
   >             and p.proname = 'sample'
   >             and p.proargtypes = array['anyelement'::regtype]::oidvector);
   >  
   >  which seems to produce a good query plan.
   >  
   >  > If this proves to be a bug, I’ll gladly enter the details in the bug system.
   >  
   >  It's intentional behavior.  Maybe if we were doing regprocedure over
   >  again today, we'd think twice about the conditional schema qualification
   >  ... but that behavior is a couple of decades old, so I think it's too late to
   >  re-litigate it.
   >  
   >              regards, tom lane


Thank you so much! And David too. I was surprised by that behavior and thought it might be a bug, but now I understand
whyand it's been what it is for a long time. Thank you for the enhanced query too. I will try it asap.
 

Laurent.

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #17772: small glitch with autocompletion on CREATE DATABASE
Next
From: PG Bug reporting form
Date:
Subject: BUG #17773: Assert triggered on analyzejoins.c