Is template1 intended to have oid 1 ?

Started by Chapman Flackover 4 years ago3 messages
#1Chapman Flack
chap@anastigmatix.net

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Chapman Flack (#1)
Re: Is template1 intended to have oid 1 ?

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

#3Chapman Flack
chap@anastigmatix.net
In reply to: Tom Lane (#2)
Re: Is template1 intended to have oid 1 ?

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