Re: createuser/dropuser username - Mailing list pgsql-docs
From | Bruce Momjian |
---|---|
Subject | Re: createuser/dropuser username |
Date | |
Msg-id | 201109092348.p89NmMu12417@momjian.us Whole thread Raw |
In response to | Re: createuser/dropuser username (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: createuser/dropuser username
Re: createuser/dropuser username |
List | pgsql-docs |
Tom Lane wrote: > Bruce Momjian <bruce@momjian.us> writes: > > Alvaro Herrera wrote: > >> Excerpts from Bruce Momjian's message of jue sep 08 11:52:04 -0300 2011: > >>> I started going in that direction and stopped because of this example > >>> in our docs: > >>> vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy > > >> Maybe do it unless there are parens. > > > OK, let me give that a try. > > I've been thinking more about this, and realized that there is one > killer argument in favor of not auto-quoting, at least for arguments > that represent table names: if we quote, there is no way to specify > a schema-qualified name. > > I'm too lazy to troll the archives to verify this, but I am moderately > sure that this point never came up in the original discussions where > we concluded that auto-quoting command-line arguments was a good policy, > because that was before we'd implemented schemas. > > So what I'm thinking right now is that we indeed should not auto-quote > table- or index-name arguments. However, usernames and database names > taken from the command line are still going to be auto-quoted, because > that's how things work in connection requests. Is it going to be > confusing that some things are quoted and some not? > > (Of course, any such change would be non-backwards-compatible and would > have to be suitably documented and release-noted.) > > The backwards-compatible alternative would be to invent additional > schema option arguments so that you could write something like > "reindexdb --schema foo --table bar", but that seems pretty darn ugly. I have implemented what you suggested above, with improved wording. Patch attached. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. + diff --git a/doc/src/sgml/ref/createdb.sgml b/doc/src/sgml/ref/createdb.sgml new file mode 100644 index 3e50173..1516f33 *** a/doc/src/sgml/ref/createdb.sgml --- b/doc/src/sgml/ref/createdb.sgml *************** PostgreSQL documentation *** 90,96 **** <term><option>--tablespace=<replaceable class="parameter">tablespace</replaceable></></term> <listitem> <para> ! Specifies the default tablespace for the database. </para> </listitem> </varlistentry> --- 90,97 ---- <term><option>--tablespace=<replaceable class="parameter">tablespace</replaceable></></term> <listitem> <para> ! Specifies the default tablespace for the database. (This name ! is processed as a double-quoted identifier.) </para> </listitem> </varlistentry> *************** PostgreSQL documentation *** 154,159 **** --- 155,161 ---- <listitem> <para> Specifies the database user who will own the new database. + (This name is processed as a double-quoted identifier.) </para> </listitem> </varlistentry> *************** PostgreSQL documentation *** 163,169 **** <term><option>--template=<replaceable class="parameter">template</replaceable></></term> <listitem> <para> ! Specifies the template database from which to build this database. </para> </listitem> </varlistentry> --- 165,172 ---- <term><option>--template=<replaceable class="parameter">template</replaceable></></term> <listitem> <para> ! Specifies the template database from which to build this ! database. (This name is processed as a double-quoted identifier.) </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/ref/createlang.sgml b/doc/src/sgml/ref/createlang.sgml new file mode 100644 index f01f298..d28cfb7 *** a/doc/src/sgml/ref/createlang.sgml --- b/doc/src/sgml/ref/createlang.sgml *************** PostgreSQL documentation *** 70,76 **** <term><replaceable class="parameter">langname</replaceable></term> <listitem> <para> ! Specifies the name of the procedural language to be installed. </para> </listitem> </varlistentry> --- 70,77 ---- <term><replaceable class="parameter">langname</replaceable></term> <listitem> <para> ! Specifies the name of the procedural language to be ! installed. (This name is lower-cased.) </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/ref/droplang.sgml b/doc/src/sgml/ref/droplang.sgml new file mode 100644 index 04c3a60..e5d02aa *** a/doc/src/sgml/ref/droplang.sgml --- b/doc/src/sgml/ref/droplang.sgml *************** PostgreSQL documentation *** 73,78 **** --- 73,79 ---- <listitem> <para> Specifies the name of the procedural language to be removed. + (This name is lower-cased.) </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/reference.sgml b/doc/src/sgml/reference.sgml new file mode 100644 index 9ae8000..5fd6410 *** a/doc/src/sgml/reference.sgml --- b/doc/src/sgml/reference.sgml *************** *** 198,203 **** --- 198,211 ---- applications is that they can be run on any host, independent of where the database server resides. </para> + + <para> + When specified on the command line, user and databases names have + their case preserved — the presence of spaces or special + characters might require quoting. Table names and other identifiers + do not have their case preserved, except where documented, and + might require quoting. + </para> </partintro> &clusterdb; diff --git a/src/bin/scripts/clusterdb.c b/src/bin/scripts/clusterdb.c new file mode 100644 index f4c317a..3742091 *** a/src/bin/scripts/clusterdb.c --- b/src/bin/scripts/clusterdb.c *************** cluster_one_database(const char *dbname, *** 177,183 **** if (verbose) appendPQExpBuffer(&sql, " VERBOSE"); if (table) ! appendPQExpBuffer(&sql, " %s", fmtId(table)); appendPQExpBuffer(&sql, ";\n"); conn = connectDatabase(dbname, host, port, username, prompt_password, progname); --- 177,183 ---- if (verbose) appendPQExpBuffer(&sql, " VERBOSE"); if (table) ! appendPQExpBuffer(&sql, " %s", table); appendPQExpBuffer(&sql, ";\n"); conn = connectDatabase(dbname, host, port, username, prompt_password, progname); diff --git a/src/bin/scripts/createlang.c b/src/bin/scripts/createlang.c new file mode 100644 index c2153db..2f667e8 *** a/src/bin/scripts/createlang.c --- b/src/bin/scripts/createlang.c *************** main(int argc, char *argv[]) *** 164,169 **** --- 164,170 ---- exit(1); } + /* lower case language name */ for (p = langname; *p; p++) if (*p >= 'A' && *p <= 'Z') *p += ('a' - 'A'); diff --git a/src/bin/scripts/droplang.c b/src/bin/scripts/droplang.c new file mode 100644 index 7fadee0..f136a76 *** a/src/bin/scripts/droplang.c --- b/src/bin/scripts/droplang.c *************** main(int argc, char *argv[]) *** 165,170 **** --- 165,171 ---- exit(1); } + /* lower case language name */ for (p = langname; *p; p++) if (*p >= 'A' && *p <= 'Z') *p += ('a' - 'A'); diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c new file mode 100644 index 53fff01..caeed75 *** a/src/bin/scripts/reindexdb.c --- b/src/bin/scripts/reindexdb.c *************** reindex_one_database(const char *name, c *** 223,231 **** appendPQExpBuffer(&sql, "REINDEX"); if (strcmp(type, "TABLE") == 0) ! appendPQExpBuffer(&sql, " TABLE %s", fmtId(name)); else if (strcmp(type, "INDEX") == 0) ! appendPQExpBuffer(&sql, " INDEX %s", fmtId(name)); else if (strcmp(type, "DATABASE") == 0) appendPQExpBuffer(&sql, " DATABASE %s", fmtId(name)); appendPQExpBuffer(&sql, ";\n"); --- 223,231 ---- appendPQExpBuffer(&sql, "REINDEX"); if (strcmp(type, "TABLE") == 0) ! appendPQExpBuffer(&sql, " TABLE %s", name); else if (strcmp(type, "INDEX") == 0) ! appendPQExpBuffer(&sql, " INDEX %s", name); else if (strcmp(type, "DATABASE") == 0) appendPQExpBuffer(&sql, " DATABASE %s", fmtId(name)); appendPQExpBuffer(&sql, ";\n");
pgsql-docs by date: