Re: Getting fancy errors when accessing information_schema on 10.5

Axel Rau <axel.rau@chaos1.de>

From: Axel Rau <Axel.Rau@chaos1.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Laurenz Albe <laurenz.albe@cybertec.at>, pgsql-admin@postgresql.org
Date: 2018-10-30T13:02:33Z
Lists: pgsql-hackers

> Am 30.10.2018 um 13:58 schrieb Tom Lane <tgl@sss.pgh.pa.us>:
> 
> Axel Rau <Axel.Rau@Chaos1.DE> writes:
>>> Am 30.10.2018 um 13:17 schrieb Tom Lane <tgl@sss.pgh.pa.us>:
>>> It doesn't happen for me either.  Looking at the planner code, it seems
>>> like the relkind check should happen first because it'd be cheaper than
>>> the OR condition.  Have you perhaps messed with the cost attributed to
>>> pg_has_role(), has_sequence_privilege(), or chareq()?
> 
>> Not by intention. The instance has some history, it go back to 8.x I think.
> 
>>> You could investigate with, eg,
>>> 
>>> select oid::regprocedure, procost from pg_proc
>>> where proname = 'has_sequence_privilege';
> 
>> nextcloud=> select oid::regprocedure, procost from pg_proc
>> nextcloud->  where proname = 'has_sequence_privilege';
>>                  oid                   | procost 
>> ----------------------------------------+---------
>> has_sequence_privilege(name,text,text) |       1
>> has_sequence_privilege(name,oid,text)  |       1
>> has_sequence_privilege(oid,text,text)  |       1
>> has_sequence_privilege(oid,oid,text)   |       1
>> has_sequence_privilege(text,text)      |       1
>> has_sequence_privilege(oid,text)       |       1
>> (6 rows)
> 
> Hm, nothing surprising there, but what about the other two?


nextcloud=> select oid::regprocedure, procost from pg_proc
 where proname = 'pg_has_role';
             oid             | procost 
-----------------------------+---------
 pg_has_role(name,name,text) |       1
 pg_has_role(name,oid,text)  |       1
 pg_has_role(oid,name,text)  |       1
 pg_has_role(oid,oid,text)   |       1
 pg_has_role(name,text)      |       1
 pg_has_role(oid,text)       |       1
(6 rows)

nextcloud=> select oid::regprocedure, procost from pg_proc
 where proname = 'chareq';
          oid          | procost 
-----------------------+---------
 chareq("char","char") |       1
(1 row)

nextcloud=>

Axel
---
PGP-Key:29E99DD6  ☀  computing @ chaos claudius