public inbox for [email protected]
help / color / mirror / Atom feedFrom: David G. Johnston <[email protected]>
To: Adrian Klaver <[email protected]>
Cc: Igor Korot <[email protected]>
Cc: pgsql-generallists.postgresql.org <[email protected]>
Subject: Re: Fwd: Identify system databases
Date: Tue, 15 Apr 2025 11:35:34 -0700
Message-ID: <CAKFQuwYpY7urAHuns26cw=9TKTZJU4JdVBrXWoSH_nHfZ_s3Ww@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <CA+FnnTxab=JyE0DZkfL4Z2MK8RvvTud9MZiNenD45AoV_t2Mxg@mail.gmail.com>
<CAKFQuwYaDXuuDoEaad5sYW97pRS_FJnmfZCwY3FojnDOdfXc9Q@mail.gmail.com>
<CA+FnnTzwmMTNymgPuiF4CLfa6YO+HBRx4Qy5_B_KDw1oNpiukw@mail.gmail.com>
<CA+FnnTyWMXPEVAwNNDnCVDfmTFNHdDfffiF5vLioxyTv8Jmq0A@mail.gmail.com>
<[email protected]>
<CAKFQuwbkQTbUwA4c6LFOMUWX5ojQY8DpKPQRh+xoe4VZABPWfw@mail.gmail.com>
<[email protected]>
On Tue, Apr 15, 2025 at 11:20 AM Adrian Klaver <[email protected]>
wrote:
> On 4/15/25 09:48, David G. Johnston wrote:
> > On Tue, Apr 15, 2025 at 9:31 AM Adrian Klaver <[email protected]
> > <mailto:[email protected]>> wrote:
> >
>
> >
> > Agreed.
> >
> > The fact that initdb creates the template0, template1 and postgres
> > databases and you can't change that makes them system not user
> > databases.
> >
> >
> > Based on that definition there is a boundary in the system where OIDs
> > are considered bootstrap/system OIDs versus user OIDs. Key off of
> > that. Though since the names never change, and there are always/only
> > three, it seems pointless to use the OID aspect of initdb as a basis.
> >
> > My definition of a "system database" would be a database that, if it
> > didn't exist, would cause the system to break. i.e., is a database
> > whose presence is integral to the operations of the system. None of
> > these qualify under that definition. Which is why there is no column in
> > pg_database identifying system databases - there are none.
>
> 1) Try connecting(not using single user mode) to a cluster without them.
>
I did. Here, the full test.
-- freshly initdb cluster exists and is running
❯ cat ~/Downloads/test-drops.bash
createdb mydb
psql -c 'alter database template0 is_template false;' mydb
dropdb template0
psql -c 'alter database template1 is_template false;' mydb
dropdb template1
dropdb --maintenance-db mydb postgres
psql -c '\l' mydb
❯ bash ~/Downloads/test-drops.bash
ALTER DATABASE
ALTER DATABASE
List of databases
Name | Owner | Encoding | Locale Provider | Collate | Ctype |
Locale | ICU Rules | Access privileges
------+--------+----------+-----------------+------------+------------+--------+-----------+-------------------
mydb | davidj | UTF8 | libc | en_US.utf8 | en_US.utf8 |
| |
(1 row)
> 2) Trying creating a database or databases to replace them without them
> existing in the first place.
>
Why?
> If what you say is true why does initdb lack an option to not create
> them on creating a cluster?
>
Well, it has to create one database because it is not possible to connect
to the cluster without naming a specific database.
initdb could allow the user to specify the initial database name and only
create that single database. It would work.
By creating the initial three databases the system is more usable due to
having established conventions. They are conventional databases, not
system ones.
Plus, it leaves the cluster in a state that is generally much more
user-friendly. And, as shown, people who dislike the convention can
rearrange things into whatever form they desire.
David J.
view thread (6+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected]
Subject: Re: Fwd: Identify system databases
In-Reply-To: <CAKFQuwYpY7urAHuns26cw=9TKTZJU4JdVBrXWoSH_nHfZ_s3Ww@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox