From: | Julien Rouhaud <rjuju123(at)gmail(dot)com> |
---|---|
To: | Amit Langote <amitlangote09(at)gmail(dot)com> |
Cc: | Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, Masahiko Sawada <masahiko(dot)sawada(at)2ndquadrant(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Identifying user-created objects |
Date: | 2020-02-13 08:15:02 |
Message-ID: | CAOBaU_amf5zX4s-ey7EEW2ftvgu32D-8eh5z0TArO__wwQKi9g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Feb 13, 2020 at 8:32 AM Amit Langote <amitlangote09(at)gmail(dot)com> wrote:
>
> On Thu, Feb 13, 2020 at 10:30 AM Kyotaro Horiguchi
> <horikyota(dot)ntt(at)gmail(dot)com> wrote:
> > At Mon, 10 Feb 2020 14:32:44 +0900, Amit Langote <amitlangote09(at)gmail(dot)com> wrote in
> > > Agree that ObjectIsUserObject(oid) is easier to read than oid >=
> > > FirstNormalObject. I would have not bothered, for example, if it was
> > > something like oid >= FirstUserObjectId to begin with.
> >
> > Aside from the naming, I'm not sure it's sensible to use
> > FirstNormalObjectId since I don't see a clear definition or required
> > characteristics for "user created objects" is. If we did CREATE
> > TABLE, FUNCTION or maybe any objects during single-user mode before
> > the first object is created during normal multiuser operation, the
> > "user-created(or not?)" object has an OID less than
> > FirstNormalObjectId. If such objects are the "user created object", we
> > need FirstUserObjectId defferent from FirstNormalObjectId.
>
> Interesting observation. Connecting to database in --single mode,
> whether done using initdb or directly, is always considered
> "bootstrapping", so the OIDs from the bootstrapping range are
> consumed.
>
> $ postgres --single -D pgdata postgres
>
> PostgreSQL stand-alone backend 13devel
> backend> create table a (a int);
> backend> select 'a'::regclass::oid;
> 1: oid (typeid = 26, len = 4, typmod = -1, byval = t)
> ----
> 1: oid = "14168" (typeid = 26, len = 4, typmod = -1, byval = t)
>
> Here, FirstBootstrapObjectId < 14168 < FirstNormalObjectId
FTR it's also possible to get the same result using binary mode and
binary_upgrade_set_next_XXX functions.
> Maybe we could document that pg_is_user_object() and its internal
> counterpart returns true only for objects that are created during
> "normal" multi-user database operation.
+1
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Kapila | 2020-02-13 08:45:13 | Re: ERROR: subtransaction logged without previous top-level txn record |
Previous Message | Amit Langote | 2020-02-13 08:12:48 | Re: assert pg_class.relnatts is consistent |