Re: createuser/dropuser username - Mailing list pgsql-docs

From Bruce Momjian
Subject Re: createuser/dropuser username
Date
Msg-id 201109102039.p8AKdC003965@momjian.us
Whole thread Raw
In response to Re: createuser/dropuser username  (Bruce Momjian <bruce@momjian.us>)
List pgsql-docs
Patch applied.

---------------------------------------------------------------------------

Bruce Momjian wrote:
> 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. +

[ text/x-diff is unsupported, treating like TEXT/PLAIN ]

> 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");

>
> --
> Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-docs

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +

pgsql-docs by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: 7.1. Overview (The SQL Language)
Next
From: Bruce Momjian
Date:
Subject: Re: 5.3.5. Foreign Keys (The SQL Language) possible enhance