Thread: Re: [PATCHES] default database creation with initdb
[ 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
Am Samstag, den 18.06.2005, 10:12 -0400 schrieb Tom Lane: > [ redirected back to hackers, since it seems this is far from a finished > discussion ] > ... > 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 failing because 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. Looks like 2 entirely different targets. So the only solution I see would 2 databases created by default: 1 tooldb or systemdb or whatever a good name there is for the tools to store their information 1 default DB (which could be optional? or initdb asks interactively? or psql/tools output a hint to create one?) If thats too much I think it could really be considered to stop connections to template0 (as to avoid clutter here) but allow it as default template for new databases. Which seems more consistent imho. (And so it would make template1 optional)
Tom Lane wrote: > [ 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 failing because 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 contradicts my intention to have users *not* to write to it, but reserve it for system like stuff. You might take everything that's not in postgres binary as non-system, but the average user's perception is different. Apparently we really need two initdb created databases for all purposes. Regards, Andreas
What about just calling the new database postgres by default? For true newbies, the first thing that happens if you try just running psql with no arguments is that you discover there's no database named postgres. For most first-time users, I suspect the postgres user is the super-user and the first user used to access any database. Just throwing out another suggestion. -- Thomas F. O'Connell Co-Founder, Information Architect Sitening, LLC Strategic Open Source: Open Your i™ http://www.sitening.com/ 110 30th Avenue North, Suite 6 Nashville, TN 37203-6320 615-260-0005
Thomas, > What about just calling the new database postgres by default? Hey, works for me. A great idea really. Hmmmm .... except ... on BSD platforms, due to history with Ports, the superuser is "pgsql". Fortunately, the BSDs only account for a small minority of new users, so we could just ignore it. -- Josh Berkus Aglio Database Solutions San Francisco
Josh Berkus <josh@agliodbs.com> writes: >> What about just calling the new database postgres by default? > Hey, works for me. A great idea really. Yeah, that seems like a pretty good compromise to me too. I was thinking last night that we'd end up with documentation statements like "you connect to the default database by default" which would be kinda confusing :-(. > Hmmmm .... except ... on BSD platforms, due to history with Ports, the > superuser is "pgsql". Fortunately, the BSDs only account for a small > minority of new users, so we could just ignore it. Perhaps the Ports guys will get motivated to become more standard ;-). regards, tom lane