Re: Identifying user-created objects

Поиск
Список
Период
Сортировка
От Masahiko Sawada
Тема Re: Identifying user-created objects
Дата
Msg-id CA+fd4k5OQxDNMe3Dve41BAFLQwJFQqTY4r6MOmm=B9tyu1jEfg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Identifying user-created objects  (vignesh C <vignesh21@gmail.com>)
Ответы Re: Identifying user-created objects  (vignesh C <vignesh21@gmail.com>)
Список pgsql-hackers
On Tue, 3 Mar 2020 at 23:33, vignesh C <vignesh21@gmail.com> wrote:
>
> Should we add some check if object exists or not here:
> +Datum
> +pg_is_user_object(PG_FUNCTION_ARGS)
> +{
> +    Oid oid = PG_GETARG_OID(0);
> +
> +    PG_RETURN_BOOL(ObjectIsUserObject(oid));
> +}
>
> I was trying some scenarios where we pass an object which does not exist:
> postgres=# SELECT pg_is_user_object(0);
>  pg_is_user_object
> -------------------
>  f
> (1 row)
> postgres=# SELECT pg_is_user_object(222222);
>  pg_is_user_object
> -------------------
>  t
> (1 row)
> SELECT pg_is_user_object('pg_class1'::regclass);
> ERROR:  relation "pg_class1" does not exist
> LINE 1: SELECT pg_is_user_object('pg_class1'::regclass);
>                                  ^
> I felt these behavior seems to be slightly inconsistent.
> Thoughts?
>

Hmm I'm not sure we should existing check in that function. Main use
case would be passing an oid of a tuple of a system catalog to that
function to check if the given object was created while multi-user
mode. So I think this function can assume that the given object id
exists. And if we want to do that check, we will end up with checking
if the object having that oid in all system catalogs, which is very
high cost I think.

I suspect perhaps the function name pg_is_user_object led that
confusion. That name looks like it checks if the given 'object' is
created while multi-user mode. So maybe we can improve it either by
renaming to pg_is_user_object_id (or pg_is_user_oid?) or leaving the
name but describing in the doc (based on Amit's suggestion in previous
mail):

"true for oids of objects assigned while database is operating in
normal multi-user mode, as opposed to single-user mode (see
<xreflinkend="app-postgres"/>)."

What do you think?

Regards,

--
Masahiko Sawada            http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



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

Предыдущее
От: Dilip Kumar
Дата:
Сообщение: Re: Fastpath while arranging the changes in LSN order in logical decoding
Следующее
От: Amit Kapila
Дата:
Сообщение: Re: logical replication empty transactions