Обсуждение: Is template1 intended to have oid 1 ?

Поиск
Список
Период
Сортировка

Is template1 intended to have oid 1 ?

От
Chapman Flack
Дата:
Hello hackers,

I've just noticed this in pg_database.dat:

  { oid => '1', oid_symbol => 'TemplateDbOid',
    descr => 'default template for new databases',
    datname => 'template1', ...

but in the most recent cluster that I pg_upgraded, template1 has oid 16400.

Nothing is acting broken, but ... is that supposed to happen?

Regards,
-Chap



Re: Is template1 intended to have oid 1 ?

От
Tom Lane
Дата:
Chapman Flack <chap@anastigmatix.net> writes:
> I've just noticed this in pg_database.dat:

>   { oid => '1', oid_symbol => 'TemplateDbOid',
>     descr => 'default template for new databases',
>     datname => 'template1', ...

> but in the most recent cluster that I pg_upgraded, template1 has oid 16400.

> Nothing is acting broken, but ... is that supposed to happen?

template1 does have OID 1 in a fresh-from-initdb cluster, but it's
just a database; you can drop it and recreate it if you choose.
I believe that pg_upgrade does so.

(Technically, the same applies to template0.  But our position on
template0 is that changing the contents of that is unsupported.
So pg_upgrade won't touch the target cluster's version of template0.)

            regards, tom lane



Re: Is template1 intended to have oid 1 ?

От
Chapman Flack
Дата:
On 05/09/21 18:40, Tom Lane wrote:
> template1 does have OID 1 in a fresh-from-initdb cluster, but it's
> just a database; you can drop it and recreate it if you choose.
> I believe that pg_upgrade does so.

I guess it wouldn't even have made me curious, if I hadn't noticed
the TemplateDbOid symbol being defined for it, which could end up being
wrong after a pg_upgrade.

I suppose if it is only ever referred to during bootstrap, no harm's done.

Ironically, it might be the most prominently advertised oid_symbol there is,
as that entry in pg_database.dat is what's used as the example of .dat-file
format in bki.sgml.

Regards,
-Chap