Re: Identifying user-created objects
От | Amit Langote |
---|---|
Тема | Re: Identifying user-created objects |
Дата | |
Msg-id | CA+HiwqFTNbN-DSmUcqDWX3uCxL-LU0avkbg+4gjBExrkh=uYcA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Identifying user-created objects (Kyotaro Horiguchi <horikyota.ntt@gmail.com>) |
Ответы |
Re: Identifying user-created objects
|
Список | pgsql-hackers |
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 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. Thanks, Amit
В списке pgsql-hackers по дате отправления: