diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/psql/describe.c | 65 | ||||
-rw-r--r-- | src/include/common/logging.h | 7 | ||||
-rw-r--r-- | src/test/regress/expected/dependency.out | 2 | ||||
-rw-r--r-- | src/test/regress/expected/psql.out | 42 |
4 files changed, 88 insertions, 28 deletions
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index aa4363b200a..0312de7dcb7 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -4011,14 +4011,18 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys bool showSeq = strchr(tabtypes, 's') != NULL; bool showForeign = strchr(tabtypes, 'E') != NULL; + int ntypes; PQExpBufferData buf; PGresult *res; printQueryOpt myopt = pset.popt; int cols_so_far; bool translate_columns[] = {false, false, true, false, false, false, false, false, false}; - /* If tabtypes is empty, we default to \dtvmsE (but see also command.c) */ - if (!(showTables || showIndexes || showViews || showMatViews || showSeq || showForeign)) + /* Count the number of explicitly-requested relation types */ + ntypes = showTables + showIndexes + showViews + showMatViews + + showSeq + showForeign; + /* If none, we default to \dtvmsE (but see also command.c) */ + if (ntypes == 0) showTables = showViews = showMatViews = showSeq = showForeign = true; initPQExpBuffer(&buf); @@ -4169,14 +4173,63 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys if (PQntuples(res) == 0 && !pset.quiet) { if (pattern) - pg_log_error("Did not find any relation named \"%s\".", - pattern); + { + if (ntypes != 1) + pg_log_error("Did not find any relations named \"%s\".", + pattern); + else if (showTables) + pg_log_error("Did not find any tables named \"%s\".", + pattern); + else if (showIndexes) + pg_log_error("Did not find any indexes named \"%s\".", + pattern); + else if (showViews) + pg_log_error("Did not find any views named \"%s\".", + pattern); + else if (showMatViews) + pg_log_error("Did not find any materialized views named \"%s\".", + pattern); + else if (showSeq) + pg_log_error("Did not find any sequences named \"%s\".", + pattern); + else if (showForeign) + pg_log_error("Did not find any foreign tables named \"%s\".", + pattern); + else /* should not get here */ + pg_log_error_internal("Did not find any ??? named \"%s\".", + pattern); + } else - pg_log_error("Did not find any relations."); + { + if (ntypes != 1) + pg_log_error("Did not find any relations."); + else if (showTables) + pg_log_error("Did not find any tables."); + else if (showIndexes) + pg_log_error("Did not find any indexes."); + else if (showViews) + pg_log_error("Did not find any views."); + else if (showMatViews) + pg_log_error("Did not find any materialized views."); + else if (showSeq) + pg_log_error("Did not find any sequences."); + else if (showForeign) + pg_log_error("Did not find any foreign tables."); + else /* should not get here */ + pg_log_error_internal("Did not find any ??? relations."); + } } else { - myopt.title = _("List of relations"); + myopt.title = + (ntypes != 1) ? _("List of relations") : + (showTables) ? _("List of tables") : + (showIndexes) ? _("List of indexes") : + (showViews) ? _("List of views") : + (showMatViews) ? _("List of materialized views") : + (showSeq) ? _("List of sequences") : + (showForeign) ? _("List of foreign tables") : + "List of ???"; /* should not get here */ myopt.translate_header = true; myopt.translate_columns = translate_columns; myopt.n_translate_columns = lengthof(translate_columns); diff --git a/src/include/common/logging.h b/src/include/common/logging.h index 5d8636f75c9..81529ee8f29 100644 --- a/src/include/common/logging.h +++ b/src/include/common/logging.h @@ -153,4 +153,11 @@ void pg_log_generic_v(enum pg_log_level level, enum pg_log_part part, exit(1); \ } while(0) +/* + * Use these variants for "can't happen" cases, if it seems translating their + * messages would be a waste of effort. + */ +#define pg_log_error_internal(...) pg_log_error(__VA_ARGS__) +#define pg_fatal_internal(...) pg_fatal(__VA_ARGS__) + #endif /* COMMON_LOGGING_H */ diff --git a/src/test/regress/expected/dependency.out b/src/test/regress/expected/dependency.out index 74d9ff2998d..75a078ada9e 100644 --- a/src/test/regress/expected/dependency.out +++ b/src/test/regress/expected/dependency.out @@ -116,7 +116,7 @@ FROM pg_type JOIN pg_class c ON typrelid = c.oid WHERE typname = 'deptest_t'; RESET SESSION AUTHORIZATION; REASSIGN OWNED BY regress_dep_user1 TO regress_dep_user2; \dt deptest - List of relations + List of tables Schema | Name | Type | Owner --------+---------+-------+------------------- public | deptest | table | regress_dep_user2 diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out index e6f7b9013d9..f9db4032e1f 100644 --- a/src/test/regress/expected/psql.out +++ b/src/test/regress/expected/psql.out @@ -3027,7 +3027,7 @@ Access method: heap (4 rows) \dt+ - List of relations + List of tables Schema | Name | Type | Owner | Persistence | Access method | Size | Description -----------------+---------------+-------+----------------------+-------------+---------------+---------+------------- tableam_display | tbl_heap | table | regress_display_role | permanent | heap | 0 bytes | @@ -3035,7 +3035,7 @@ Access method: heap (2 rows) \dm+ - List of relations + List of materialized views Schema | Name | Type | Owner | Persistence | Access method | Size | Description -----------------+--------------------+-------------------+----------------------+-------------+---------------+---------+------------- tableam_display | mat_view_heap_psql | materialized view | regress_display_role | permanent | heap_psql | 0 bytes | @@ -3043,7 +3043,7 @@ Access method: heap -- But not for views and sequences. \dv+ - List of relations + List of views Schema | Name | Type | Owner | Persistence | Size | Description -----------------+----------------+------+----------------------+-------------+---------+------------- tableam_display | view_heap_psql | view | regress_display_role | permanent | 0 bytes | @@ -6244,7 +6244,7 @@ List of access methods (0 rows) \dt "no.such.table.relation" - List of relations + List of tables Schema | Name | Type | Owner --------+------+------+------- (0 rows) @@ -6316,31 +6316,31 @@ List of access methods (0 rows) \di "no.such.index.relation" - List of relations + List of indexes Schema | Name | Type | Owner | Table --------+------+------+-------+------- (0 rows) \dm "no.such.materialized.view" - List of relations + List of materialized views Schema | Name | Type | Owner --------+------+------+------- (0 rows) \ds "no.such.relation" - List of relations + List of sequences Schema | Name | Type | Owner --------+------+------+------- (0 rows) \dt "no.such.relation" - List of relations + List of tables Schema | Name | Type | Owner --------+------+------+------- (0 rows) \dv "no.such.relation" - List of relations + List of views Schema | Name | Type | Owner --------+------+------+------- (0 rows) @@ -6474,7 +6474,7 @@ List of schemas \dA "no.such.schema"."no.such.access.method" improper qualified name (too many dotted names): "no.such.schema"."no.such.access.method" \dt "no.such.schema"."no.such.table.relation" - List of relations + List of tables Schema | Name | Type | Owner --------+------+------+------- (0 rows) @@ -6526,31 +6526,31 @@ improper qualified name (too many dotted names): "no.such.schema"."no.such.table (0 rows) \di "no.such.schema"."no.such.index.relation" - List of relations + List of indexes Schema | Name | Type | Owner | Table --------+------+------+-------+------- (0 rows) \dm "no.such.schema"."no.such.materialized.view" - List of relations + List of materialized views Schema | Name | Type | Owner --------+------+------+------- (0 rows) \ds "no.such.schema"."no.such.relation" - List of relations + List of sequences Schema | Name | Type | Owner --------+------+------+------- (0 rows) \dt "no.such.schema"."no.such.relation" - List of relations + List of tables Schema | Name | Type | Owner --------+------+------+------- (0 rows) \dv "no.such.schema"."no.such.relation" - List of relations + List of views Schema | Name | Type | Owner --------+------+------+------- (0 rows) @@ -6641,7 +6641,7 @@ improper qualified name (too many dotted names): "no.such.schema"."no.such.insta improper qualified name (too many dotted names): "no.such.schema"."no.such.event.trigger" -- again, but with current database and dotted schema qualifications. \dt regression."no.such.schema"."no.such.table.relation" - List of relations + List of tables Schema | Name | Type | Owner --------+------+------+------- (0 rows) @@ -6677,31 +6677,31 @@ improper qualified name (too many dotted names): "no.such.schema"."no.such.event (0 rows) \di regression."no.such.schema"."no.such.index.relation" - List of relations + List of indexes Schema | Name | Type | Owner | Table --------+------+------+-------+------- (0 rows) \dm regression."no.such.schema"."no.such.materialized.view" - List of relations + List of materialized views Schema | Name | Type | Owner --------+------+------+------- (0 rows) \ds regression."no.such.schema"."no.such.relation" - List of relations + List of sequences Schema | Name | Type | Owner --------+------+------+------- (0 rows) \dt regression."no.such.schema"."no.such.relation" - List of relations + List of tables Schema | Name | Type | Owner --------+------+------+------- (0 rows) \dv regression."no.such.schema"."no.such.relation" - List of relations + List of views Schema | Name | Type | Owner --------+------+------+------- (0 rows) |