Commit a7ade2bb authored by Bruce Momjian's avatar Bruce Momjian

Add psql \dD listing of domains, from Jonathan Eisler.

parent d3788c33
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.63 2002/03/11 05:03:52 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.64 2002/03/19 02:32:19 momjian Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -415,6 +415,29 @@ testdb=> ...@@ -415,6 +415,29 @@ testdb=>
</varlistentry> </varlistentry>
<varlistentry>
<term><literal>\dD</literal> [ <replaceable class="parameter">pattern</replaceable> ]</term>
<listitem>
<para>
Lists all database domains.
</para>
<para>
Descriptions for objects can be generated with the <command>COMMENT ON</command>
<acronym>SQL</acronym> command.
</para>
<note>
<para>
<productname>PostgreSQL</productname> stores the object descriptions in the
pg_description system table.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><literal>\df [ <replaceable class="parameter">pattern</replaceable> ]</literal></term> <term><literal>\df [ <replaceable class="parameter">pattern</replaceable> ]</literal></term>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.69 2002/03/07 17:54:39 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.70 2002/03/19 02:32:21 momjian Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "command.h" #include "command.h"
...@@ -380,6 +380,10 @@ exec_command(const char *cmd, ...@@ -380,6 +380,10 @@ exec_command(const char *cmd,
case 'u': case 'u':
success = describeUsers(name); success = describeUsers(name);
break; break;
case 'D':
success = listDomains(name);
break;
default: default:
status = CMD_UNKNOWN; status = CMD_UNKNOWN;
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.45 2002/03/07 17:54:39 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.46 2002/03/19 02:32:21 momjian Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "describe.h" #include "describe.h"
...@@ -1036,3 +1036,51 @@ listTables(const char *infotype, const char *name, bool desc) ...@@ -1036,3 +1036,51 @@ listTables(const char *infotype, const char *name, bool desc)
PQclear(res); PQclear(res);
return true; return true;
} }
/*
* \dD [domain]
*
* Describes domains, possibly based on a simplistic prefix search on the
* argument.
*/
bool
listDomains(const char *name)
{
char buf[512 + REGEXP_CUTOFF];
PGresult *res;
printQueryOpt myopt = pset.popt;
snprintf(buf, sizeof(buf),
"SELECT t.typname as \"%s\",\n"
" format_type( t.typbasetype, t.typmod) as \"%s\",\n"
" CASE WHEN t.typnotnull AND t.typdefault IS NOT NULL THEN 'not null default '||t.typdefault\n"
" WHEN t.typnotnull AND t.typdefault IS NULL THEN 'not null'\n"
" WHEN NOT t.typnotnull AND t.typdefault IS NOT NULL THEN 'default '||t.typdefault\n"
" ELSE ''\n"
" END as \"%s\"\n"
"FROM pg_type t\n"
"WHERE t.typtype = 'd'\n",
_("Name"),
_("Type"),
_("Modifier"));
if (name)
{
strcat(buf, "AND t.typname ~ '^");
strncat(buf, name, REGEXP_CUTOFF);
strcat(buf, "'\n");
}
strcat(buf, "ORDER BY 1;");
res = PSQLexec(buf);
if (!res)
return false;
myopt.nullPrint = NULL;
myopt.title = _("List of database domains");
printQuery(res, &myopt, pset.queryFout);
PQclear(res);
return true;
}
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/describe.h,v 1.15 2002/03/07 17:54:41 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/describe.h,v 1.16 2002/03/19 02:32:21 momjian Exp $
*/ */
#ifndef DESCRIBE_H #ifndef DESCRIBE_H
#define DESCRIBE_H #define DESCRIBE_H
...@@ -40,4 +40,7 @@ bool listAllDbs(bool desc); ...@@ -40,4 +40,7 @@ bool listAllDbs(bool desc);
/* \dt, \di, \ds, \dS, etc. */ /* \dt, \di, \ds, \dS, etc. */
bool listTables(const char *infotype, const char *name, bool desc); bool listTables(const char *infotype, const char *name, bool desc);
/* \dD */
bool listDomains(const char *name);
#endif /* DESCRIBE_H */ #endif /* DESCRIBE_H */
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.48 2002/03/11 18:26:20 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.49 2002/03/19 02:32:21 momjian Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "help.h" #include "help.h"
...@@ -202,6 +202,7 @@ slashUsage(void) ...@@ -202,6 +202,7 @@ slashUsage(void)
fprintf(fout, _(" \\d{p|S|l} list access privileges, system tables, or large objects\n")); fprintf(fout, _(" \\d{p|S|l} list access privileges, system tables, or large objects\n"));
fprintf(fout, _(" \\da list aggregate functions\n")); fprintf(fout, _(" \\da list aggregate functions\n"));
fprintf(fout, _(" \\dd [NAME] show comment for table, type, function, or operator\n")); fprintf(fout, _(" \\dd [NAME] show comment for table, type, function, or operator\n"));
fprintf(fout, _(" \\dD [NAME] list domains\n"));
fprintf(fout, _(" \\df list functions\n")); fprintf(fout, _(" \\df list functions\n"));
fprintf(fout, _(" \\do list operators\n")); fprintf(fout, _(" \\do list operators\n"));
fprintf(fout, _(" \\dT list data types\n")); fprintf(fout, _(" \\dT list data types\n"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment