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