Index: doc/src/sgml/ref/psql-ref.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v
retrieving revision 1.211
diff -c -r1.211 psql-ref.sgml
*** doc/src/sgml/ref/psql-ref.sgml 6 Sep 2008 20:18:08 -0000 1.211
--- doc/src/sgml/ref/psql-ref.sgml 5 Nov 2008 17:41:12 -0000
***************
*** 894,903 ****
! \dC
Lists all available type casts.
--- 894,906 ----
! \dC [ pattern ]
Lists all available type casts.
+ If pattern
+ is specified, only casts whose source or target types match the
+ pattern are listed.
Index: src/bin/psql/describe.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/describe.c,v
retrieving revision 1.186
diff -c -r1.186 describe.c
*** src/bin/psql/describe.c 3 Nov 2008 19:08:56 -0000 1.186
--- src/bin/psql/describe.c 5 Nov 2008 17:41:12 -0000
***************
*** 2082,2091 ****
initPQExpBuffer(&buf);
/*
! * We need left join here for binary casts. Also note that we don't
! * attempt to localize '(binary coercible)', because there's too much
! * risk of gettext translating a function name that happens to match
! * some string in the PO database.
*/
printfPQExpBuffer(&buf,
"SELECT pg_catalog.format_type(castsource, NULL) AS \"%s\",\n"
--- 2082,2091 ----
initPQExpBuffer(&buf);
/*
! * We need a left join to pg_proc for binary casts; the others are just
! * paranoia. Also note that we don't attempt to localize '(binary
! * coercible)', because there's too much risk of gettext translating a
! * function name that happens to match some string in the PO database.
*/
printfPQExpBuffer(&buf,
"SELECT pg_catalog.format_type(castsource, NULL) AS \"%s\",\n"
***************
*** 2099,2111 ****
" END as \"%s\"\n"
"FROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p\n"
" ON c.castfunc = p.oid\n"
! "ORDER BY 1, 2",
gettext_noop("Source type"),
gettext_noop("Target type"),
gettext_noop("Function"),
gettext_noop("no"), gettext_noop("in assignment"), gettext_noop("yes"),
gettext_noop("Implicit?"));
res = PSQLexec(buf.data, false);
termPQExpBuffer(&buf);
if (!res)
--- 2099,2137 ----
" END as \"%s\"\n"
"FROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p\n"
" ON c.castfunc = p.oid\n"
! " LEFT JOIN pg_catalog.pg_type ts\n"
! " ON c.castsource = ts.oid\n"
! " LEFT JOIN pg_catalog.pg_namespace ns\n"
! " ON ns.oid = ts.typnamespace\n"
! " LEFT JOIN pg_catalog.pg_type tt\n"
! " ON c.casttarget = tt.oid\n"
! " LEFT JOIN pg_catalog.pg_namespace nt\n"
! " ON nt.oid = tt.typnamespace\n"
! "WHERE (true",
gettext_noop("Source type"),
gettext_noop("Target type"),
gettext_noop("Function"),
gettext_noop("no"), gettext_noop("in assignment"), gettext_noop("yes"),
gettext_noop("Implicit?"));
+ /*
+ * Match name pattern against either internal or external name of either
+ * castsource or casttarget
+ */
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "ns.nspname", "ts.typname",
+ "pg_catalog.format_type(ts.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(ts.oid)");
+
+ appendPQExpBuffer(&buf, ") OR (true");
+
+ processSQLNamePattern(pset.db, &buf, pattern, true, false,
+ "nt.nspname", "tt.typname",
+ "pg_catalog.format_type(tt.oid, NULL)",
+ "pg_catalog.pg_type_is_visible(tt.oid)");
+
+ appendPQExpBuffer(&buf, ")\nORDER BY 1, 2;");
+
res = PSQLexec(buf.data, false);
termPQExpBuffer(&buf);
if (!res)
Index: src/bin/psql/help.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/help.c,v
retrieving revision 1.130
diff -c -r1.130 help.c
*** src/bin/psql/help.c 29 Aug 2008 15:52:07 -0000 1.130
--- src/bin/psql/help.c 5 Nov 2008 17:41:12 -0000
***************
*** 200,206 ****
fprintf(output, _(" \\da [PATTERN] list aggregate functions\n"));
fprintf(output, _(" \\db [PATTERN] list tablespaces (add \"+\" for more detail)\n"));
fprintf(output, _(" \\dc [PATTERN] list conversions\n"));
! fprintf(output, _(" \\dC list casts\n"));
fprintf(output, _(" \\dd [PATTERN] show comment for object\n"));
fprintf(output, _(" \\dD [PATTERN] list domains\n"));
fprintf(output, _(" \\df [PATTERN] list functions (add \"+\" for more detail)\n"));
--- 200,206 ----
fprintf(output, _(" \\da [PATTERN] list aggregate functions\n"));
fprintf(output, _(" \\db [PATTERN] list tablespaces (add \"+\" for more detail)\n"));
fprintf(output, _(" \\dc [PATTERN] list conversions\n"));
! fprintf(output, _(" \\dC [PATTERN] list casts\n"));
fprintf(output, _(" \\dd [PATTERN] show comment for object\n"));
fprintf(output, _(" \\dD [PATTERN] list domains\n"));
fprintf(output, _(" \\df [PATTERN] list functions (add \"+\" for more detail)\n"));