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