mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
Make psql \d and \dt consistent for system tables, i.e prevent \d from
showing system tables, make \dS pattern show system table details, and have \dtS show system and _user_ tables, to be consistent with other \d* commands.
This commit is contained in:
parent
2384287f6d
commit
71928e7b9f
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.201 2009/01/06 21:10:30 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.202 2009/01/20 02:13:42 momjian Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
#include "command.h"
|
||||
@ -334,14 +334,15 @@ exec_command(const char *cmd,
|
||||
OT_NORMAL, NULL, true);
|
||||
|
||||
show_verbose = strchr(cmd, '+') ? true : false;
|
||||
show_system = strchr(cmd, 'S') ? true: false;
|
||||
show_system = strchr(cmd, 'S') ? true : false;
|
||||
|
||||
switch (cmd[1])
|
||||
{
|
||||
case '\0':
|
||||
case '+':
|
||||
case 'S':
|
||||
if (pattern)
|
||||
success = describeTableDetails(pattern, show_verbose);
|
||||
success = describeTableDetails(pattern, show_verbose, show_system);
|
||||
else
|
||||
/* standard listing of interesting things */
|
||||
success = listTables("tvs", NULL, show_verbose, show_system);
|
||||
@ -390,7 +391,6 @@ exec_command(const char *cmd,
|
||||
case 'v':
|
||||
case 'i':
|
||||
case 's':
|
||||
case 'S':
|
||||
success = listTables(&cmd[1], pattern, show_verbose, show_system);
|
||||
break;
|
||||
case 'u':
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.196 2009/01/19 18:44:32 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.197 2009/01/20 02:13:42 momjian Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
|
||||
@ -782,7 +782,7 @@ objectDescription(const char *pattern, bool showSystem)
|
||||
* verbose: if true, this is \d+
|
||||
*/
|
||||
bool
|
||||
describeTableDetails(const char *pattern, bool verbose)
|
||||
describeTableDetails(const char *pattern, bool verbose, bool showSystem)
|
||||
{
|
||||
PQExpBufferData buf;
|
||||
PGresult *res;
|
||||
@ -797,7 +797,10 @@ describeTableDetails(const char *pattern, bool verbose)
|
||||
"FROM pg_catalog.pg_class c\n"
|
||||
" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n");
|
||||
|
||||
processSQLNamePattern(pset.db, &buf, pattern, false, false,
|
||||
if (!showSystem)
|
||||
appendPQExpBuffer(&buf, " WHERE n.nspname <> 'pg_catalog'\n");
|
||||
|
||||
processSQLNamePattern(pset.db, &buf, pattern, !showSystem, false,
|
||||
"n.nspname", "c.relname", NULL,
|
||||
"pg_catalog.pg_table_is_visible(c.oid)");
|
||||
|
||||
@ -1961,20 +1964,13 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
|
||||
appendPQExpBuffer(&buf, "'i',");
|
||||
if (showSeq)
|
||||
appendPQExpBuffer(&buf, "'S',");
|
||||
if (showSystem && showTables)
|
||||
if (showSystem)
|
||||
appendPQExpBuffer(&buf, "'s',"); /* was RELKIND_SPECIAL in <= 8.1.X */
|
||||
appendPQExpBuffer(&buf, "''"); /* dummy */
|
||||
appendPQExpBuffer(&buf, ")\n");
|
||||
|
||||
/*
|
||||
* If showSystem is specified, show only system objects (those in
|
||||
* pg_catalog). Otherwise, suppress system objects, including those in
|
||||
* pg_catalog and pg_toast. (We don't want to hide temp tables though.)
|
||||
*/
|
||||
if (showSystem)
|
||||
appendPQExpBuffer(&buf,
|
||||
" AND n.nspname = 'pg_catalog'\n");
|
||||
else
|
||||
if (!showSystem)
|
||||
/* Exclude system and pg_toast objects, but show temp tables */
|
||||
appendPQExpBuffer(&buf,
|
||||
" AND n.nspname <> 'pg_catalog'\n"
|
||||
" AND n.nspname !~ '^pg_toast'\n");
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.h,v 1.38 2009/01/06 21:10:30 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/describe.h,v 1.39 2009/01/20 02:13:42 momjian Exp $
|
||||
*/
|
||||
#ifndef DESCRIBE_H
|
||||
#define DESCRIBE_H
|
||||
@ -34,7 +34,7 @@ extern bool permissionsList(const char *pattern);
|
||||
extern bool objectDescription(const char *pattern, bool showSystem);
|
||||
|
||||
/* \d foo */
|
||||
extern bool describeTableDetails(const char *pattern, bool verbose);
|
||||
extern bool describeTableDetails(const char *pattern, bool verbose, bool showSystem);
|
||||
|
||||
/* \dF */
|
||||
extern bool listTSConfigs(const char *pattern, bool verbose);
|
||||
|
Loading…
Reference in New Issue
Block a user