Re: [PATCHES] default database creation with initdb - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [PATCHES] default database creation with initdb
Date
Msg-id 12618.1119103922@sss.pgh.pa.us
Whole thread Raw
Responses Re: [PATCHES] default database creation with initdb
Re: [PATCHES] default database creation with initdb
List pgsql-hackers
[ redirected back to hackers, since it seems this is far from a finished discussion ]

Robert Treat <xzilla@users.sourceforge.net> writes:
> What is the purpose of this database? A generalized, shared resource for tool
> makers and add-on packages to store information in PostgreSQL, or a working 
> database that is usable (and to be used) out of the box for new users?  I 
> really don't think we want the latter... I can see users connecting via psql 
> and then playing around with different add/create type statements.  It is all
> too common a question from newbies... "does postgresql have a default 
> database to get started with?" They'll see this database and begin creating 
> schema and using this as thier main database, and I think we ought to avoid 
> that. If people don't like pg_system, pg_addons seem like a much safer name 
> to go with imho. 

pg_addons or pg_tools or something like that seems like a fine name *for
the purpose of a tools-only database* ... but that is only one of the
issues being tossed around here.  To me the much more interesting aspect
of this is reducing the extent to which template1 is serving multiple
not-very-compatible purposes.  I like the idea of a default database
because it would eliminate two perennial issues: * newbies mistakenly cluttering template1 with junk * CREATE DATABASE
failingbecause there are other connections to the   template database.
 

To be newbie-friendly, such a default database *should* be writable,
I think.  The whole point is to let people play without having to learn
how to create a database first.  If they clutter it up, so what?  They
can always drop it and recreate it --- there won't be anything at all
special about it.  (Thus, Andreas' desire to have it be considered a
"system object" seems misplaced to me.)

This vision immediately brings up another issue: for most client tools
the default database-to-connect-to is *not* template1, it is the
database named after the connecting user.  If we invent a default
database, should we change things to remove the username dependence
and always connect to "default" by default?  I think you could argue
this either way --- it may be too much of a non-backwards-compatible
change, but if we were designing the behavior in a green field today,
I suspect that's what we'd make it do.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Robert Treat
Date:
Subject: Re: [PATCHES] Escape handling in strings
Next
From: Tom Lane
Date:
Subject: Re: Returning Composite Types from C functions