mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-09 08:10:09 +08:00
Don't show unusable collations in psql's \dO command.
"Unusable" collations are those not matching the current database's encoding. The former behavior inconsistently showed such collations some of the time, depending on the details of the pattern argument.
This commit is contained in:
parent
fe1438da8a
commit
7c76906b7e
@ -1264,7 +1264,7 @@ testdb=>
|
||||
<term><literal>\dL[S+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Lists all procedural languages. If <replaceable
|
||||
Lists procedural languages. If <replaceable
|
||||
class="parameter">pattern</replaceable>
|
||||
is specified, only languages whose names match the pattern are listed.
|
||||
By default, only user-created languages
|
||||
@ -1311,7 +1311,6 @@ testdb=>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>\dO[S+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Lists collations.
|
||||
@ -1320,8 +1319,11 @@ testdb=>
|
||||
listed. By default, only user-created objects are shown;
|
||||
supply a pattern or the <literal>S</literal> modifier to
|
||||
include system objects. If <literal>+</literal> is appended
|
||||
to the command name, each object is listed with its associated
|
||||
to the command name, each collation is listed with its associated
|
||||
description, if any.
|
||||
Note that only collations usable with the current database's encoding
|
||||
are shown, so the results may vary in different databases of the
|
||||
same installation.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -2883,7 +2883,7 @@ listCasts(const char *pattern)
|
||||
/*
|
||||
* \dO
|
||||
*
|
||||
* Describes collations
|
||||
* Describes collations.
|
||||
*/
|
||||
bool
|
||||
listCollations(const char *pattern, bool verbose, bool showSystem)
|
||||
@ -2907,17 +2907,25 @@ listCollations(const char *pattern, bool verbose, bool showSystem)
|
||||
|
||||
if (verbose)
|
||||
appendPQExpBuffer(&buf,
|
||||
",\n pg_catalog.obj_description(c.oid, 'pg_collation') AS \"%s\"",
|
||||
",\n pg_catalog.obj_description(c.oid, 'pg_collation') AS \"%s\"",
|
||||
gettext_noop("Description"));
|
||||
|
||||
appendPQExpBuffer(&buf,
|
||||
"FROM pg_catalog.pg_collation c, pg_catalog.pg_namespace n\n"
|
||||
"\nFROM pg_catalog.pg_collation c, pg_catalog.pg_namespace n\n"
|
||||
"WHERE n.oid = c.collnamespace\n");
|
||||
|
||||
if (!showSystem && !pattern)
|
||||
appendPQExpBuffer(&buf, " AND n.nspname <> 'pg_catalog'\n"
|
||||
" AND n.nspname <> 'information_schema'\n");
|
||||
|
||||
/*
|
||||
* Hide collations that aren't usable in the current database's encoding.
|
||||
* If you think to change this, note that pg_collation_is_visible rejects
|
||||
* unusable collations, so you will need to hack name pattern processing
|
||||
* somehow to avoid inconsistent behavior.
|
||||
*/
|
||||
appendPQExpBuffer(&buf, " AND c.collencoding IN (-1, pg_catalog.pg_char_to_encoding(pg_catalog.getdatabaseencoding()))\n");
|
||||
|
||||
processSQLNamePattern(pset.db, &buf, pattern, true, false,
|
||||
"n.nspname", "c.collname", NULL,
|
||||
"pg_catalog.pg_collation_is_visible(c.oid)");
|
||||
|
Loading…
Reference in New Issue
Block a user