Re: Identifying user-created objects
От | Julien Rouhaud |
---|---|
Тема | Re: Identifying user-created objects |
Дата | |
Msg-id | CAOBaU_amf5zX4s-ey7EEW2ftvgu32D-8eh5z0TArO__wwQKi9g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Identifying user-created objects (Amit Langote <amitlangote09@gmail.com>) |
Ответы |
Re: Identifying user-created objects
|
Список | pgsql-hackers |
On Thu, Feb 13, 2020 at 8:32 AM Amit Langote <amitlangote09@gmail.com> wrote: > > On Thu, Feb 13, 2020 at 10:30 AM Kyotaro Horiguchi > <horikyota.ntt@gmail.com> wrote: > > At Mon, 10 Feb 2020 14:32:44 +0900, Amit Langote <amitlangote09@gmail.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
В списке pgsql-hackers по дате отправления: