proposal - reglanguage type

Started by Pavel Stehuleabout 6 years ago3 messageshackers
Jump to latest
#1Pavel Stehule
pavel.stehule@gmail.com

Hi

I miss a reglanguage type from our set of reg* types.

It reduce a mental overhead for queries over pg_proc table

With this type I can easy filter only plpgsql functions

select *
from pg_proc
where prolang = 'plpgsql'::reglanguage
and pronamespace <> 'pg_catalog'::regnamespace;

Regards

Pavel

Attachments:

reglanguage.patchtext/x-patch; charset=US-ASCII; name=reglanguage.patchDownload+208-4
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Pavel Stehule (#1)
Re: proposal - reglanguage type

Pavel Stehule <pavel.stehule@gmail.com> writes:

I miss a reglanguage type from our set of reg* types.

I'm skeptical about this. I don't think we want to wind up with a reg*
type for every system catalog, so there needs to be some rule about which
ones it's worth the trouble for. The original idea was to provide a reg*
type if the lookup rule would be anything more complicated than "select
oid from <catalog> where name = 'foo'". We went beyond that with
regnamespace and regrole, but I think there was a sufficient argument of
usefulness for those two. I don't see that reglanguage has enough of
a use-case.

regards, tom lane

#3Pavel Stehule
pavel.stehule@gmail.com
In reply to: Tom Lane (#2)
Re: proposal - reglanguage type

ne 1. 3. 2020 v 19:31 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:

Pavel Stehule <pavel.stehule@gmail.com> writes:

I miss a reglanguage type from our set of reg* types.

I'm skeptical about this. I don't think we want to wind up with a reg*
type for every system catalog, so there needs to be some rule about which
ones it's worth the trouble for. The original idea was to provide a reg*
type if the lookup rule would be anything more complicated than "select
oid from <catalog> where name = 'foo'". We went beyond that with
regnamespace and regrole, but I think there was a sufficient argument of
usefulness for those two. I don't see that reglanguage has enough of
a use-case.

the use-case is probably only one - filtering pg_proc. Probably the most
common filter is

prolang = (SELECT oid
FROM pg_language
WHERE lanname = 'plpgsql')

It's little bit not comfortable so for namespace we can do pronamespace <>
'pg_catalog'::regnamespace and there is nothing for language.

This feature is interesting for people who write code in plpgsql, or who
migrate from PL/SQL (and for people who use plpgsql_check).

All mass check (mass usage of plpgsql_check) have to use filter on prolang.

Regards

Pavel

Show quoted text

regards, tom lane