From e60146531711890993042f00667734097aca021d Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Thu, 15 Jul 2021 03:19:58 -0500 Subject: [PATCH 3/4] f!convert the other verbose to int, too --- src/bin/psql/command.c | 82 ++++++++++---------- src/bin/psql/describe.c | 163 ++++++++++++++++++++-------------------- src/bin/psql/describe.h | 58 +++++++------- 3 files changed, 151 insertions(+), 152 deletions(-) diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 14c772c18f3..6ee91bd2892 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -76,7 +76,7 @@ static backslashResult exec_command_d(PsqlScanState scan_state, bool active_bran const char *cmd); static bool exec_command_dfo(PsqlScanState scan_state, const char *cmd, const char *pattern, - bool show_verbose, bool show_system); + int verbose, bool show_system); static backslashResult exec_command_edit(PsqlScanState scan_state, bool active_branch, PQExpBuffer query_buf, PQExpBuffer previous_buf); static backslashResult exec_command_ef_ev(PsqlScanState scan_state, bool active_branch, @@ -759,8 +759,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) { char *pattern; int verbose = 0; - bool show_verbose, - show_system; + bool show_system; /* We don't do SQLID reduction on the pattern yet */ pattern = psql_scan_slash_option(scan_state, @@ -769,7 +768,6 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) for (const char *t = cmd; *t != '\0'; ++t) verbose += *t == '+' ? 1 : 0; - show_verbose = (bool) (verbose != 0); show_system = strchr(cmd, 'S') ? true : false; switch (cmd[1]) @@ -778,10 +776,10 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) case '+': case 'S': if (pattern) - success = describeTableDetails(pattern, show_verbose, show_system); + success = describeTableDetails(pattern, verbose, show_system); else /* standard listing of interesting things */ - success = listTables("tvmsE", NULL, show_verbose, show_system); + success = listTables("tvmsE", NULL, verbose, show_system); break; case 'A': { @@ -797,16 +795,16 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) success = describeAccessMethods(pattern, verbose); break; case 'c': - success = listOperatorClasses(pattern, pattern2, show_verbose); + success = listOperatorClasses(pattern, pattern2, verbose); break; case 'f': - success = listOperatorFamilies(pattern, pattern2, show_verbose); + success = listOperatorFamilies(pattern, pattern2, verbose); break; case 'o': - success = listOpFamilyOperators(pattern, pattern2, show_verbose); + success = listOpFamilyOperators(pattern, pattern2, verbose); break; case 'p': - success = listOpFamilyFunctions(pattern, pattern2, show_verbose); + success = listOpFamilyFunctions(pattern, pattern2, verbose); break; default: status = PSQL_CMD_UNKNOWN; @@ -817,7 +815,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) } break; case 'a': - success = describeAggregates(pattern, show_verbose, show_system); + success = describeAggregates(pattern, verbose, show_system); break; case 'b': success = describeTablespaces(pattern, verbose); @@ -825,15 +823,15 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) case 'c': if (strncmp(cmd, "dconfig", 7) == 0) success = describeConfigurationParameters(pattern, - show_verbose, + verbose, show_system); else success = listConversions(pattern, - show_verbose, + verbose, show_system); break; case 'C': - success = listCasts(pattern, show_verbose); + success = listCasts(pattern, verbose); break; case 'd': if (strncmp(cmd, "ddp", 3) == 0) @@ -842,7 +840,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) success = objectDescription(pattern, show_system); break; case 'D': - success = listDomains(pattern, show_verbose, show_system); + success = listDomains(pattern, verbose, show_system); break; case 'f': /* function subsystem */ switch (cmd[2]) @@ -856,7 +854,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) case 't': case 'w': success = exec_command_dfo(scan_state, cmd, pattern, - show_verbose, show_system); + verbose, show_system); break; default: status = PSQL_CMD_UNKNOWN; @@ -865,23 +863,23 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) break; case 'g': /* no longer distinct from \du */ - success = describeRoles(pattern, show_verbose, show_system); + success = describeRoles(pattern, verbose, show_system); break; case 'l': - success = listLargeObjects(show_verbose); + success = listLargeObjects(verbose); break; case 'L': - success = listLanguages(pattern, show_verbose, show_system); + success = listLanguages(pattern, verbose, show_system); break; case 'n': success = listSchemas(pattern, verbose, show_system); break; case 'o': success = exec_command_dfo(scan_state, cmd, pattern, - show_verbose, show_system); + verbose, show_system); break; case 'O': - success = listCollations(pattern, show_verbose, show_system); + success = listCollations(pattern, verbose, show_system); break; case 'p': success = permissionsList(pattern, show_system); @@ -895,7 +893,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) case 't': case 'i': case 'n': - success = listPartitionedTables(&cmd[2], pattern, show_verbose); + success = listPartitionedTables(&cmd[2], pattern, verbose); break; default: status = PSQL_CMD_UNKNOWN; @@ -904,7 +902,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) } break; case 'T': - success = describeTypes(pattern, show_verbose, show_system); + success = describeTypes(pattern, verbose, show_system); break; case 't': case 'v': @@ -912,7 +910,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) case 'i': case 's': case 'E': - success = listTables(&cmd[1], pattern, show_verbose, show_system); + success = listTables(&cmd[1], pattern, verbose, show_system); break; case 'r': if (cmd[2] == 'd' && cmd[3] == 's') @@ -935,36 +933,36 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) switch (cmd[2]) { case 'p': - if (show_verbose) + if (verbose > 0) success = describePublications(pattern); else success = listPublications(pattern); break; case 's': - success = describeSubscriptions(pattern, show_verbose); + success = describeSubscriptions(pattern, verbose); break; default: status = PSQL_CMD_UNKNOWN; } break; case 'u': - success = describeRoles(pattern, show_verbose, show_system); + success = describeRoles(pattern, verbose, show_system); break; case 'F': /* text search subsystem */ switch (cmd[2]) { case '\0': case '+': - success = listTSConfigs(pattern, show_verbose); + success = listTSConfigs(pattern, verbose); break; case 'p': - success = listTSParsers(pattern, show_verbose); + success = listTSParsers(pattern, verbose); break; case 'd': - success = listTSDictionaries(pattern, show_verbose); + success = listTSDictionaries(pattern, verbose); break; case 't': - success = listTSTemplates(pattern, show_verbose); + success = listTSTemplates(pattern, verbose); break; default: status = PSQL_CMD_UNKNOWN; @@ -975,16 +973,16 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) switch (cmd[2]) { case 's': - success = listForeignServers(pattern, show_verbose); + success = listForeignServers(pattern, verbose); break; case 'u': - success = listUserMappings(pattern, show_verbose); + success = listUserMappings(pattern, verbose); break; case 'w': - success = listForeignDataWrappers(pattern, show_verbose); + success = listForeignDataWrappers(pattern, verbose); break; case 't': - success = listForeignTables(pattern, show_verbose); + success = listForeignTables(pattern, verbose); break; default: status = PSQL_CMD_UNKNOWN; @@ -992,7 +990,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) } break; case 'x': /* Extensions */ - if (show_verbose) + if (verbose > 0) success = listExtensionContents(pattern); else success = listExtensions(pattern); @@ -1001,7 +999,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) success = listExtendedStats(pattern); break; case 'y': /* Event Triggers */ - success = listEventTriggers(pattern, show_verbose); + success = listEventTriggers(pattern, verbose); break; default: status = PSQL_CMD_UNKNOWN; @@ -1022,7 +1020,7 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) static bool exec_command_dfo(PsqlScanState scan_state, const char *cmd, const char *pattern, - bool show_verbose, bool show_system) + int verbose, bool show_system) { bool success; char *arg_patterns[FUNC_MAX_ARGS]; @@ -1045,11 +1043,11 @@ exec_command_dfo(PsqlScanState scan_state, const char *cmd, if (cmd[1] == 'f') success = describeFunctions(&cmd[2], pattern, arg_patterns, num_arg_patterns, - show_verbose, show_system); + verbose, show_system); else success = describeOperators(pattern, arg_patterns, num_arg_patterns, - show_verbose, show_system); + verbose, show_system); while (--num_arg_patterns >= 0) free(arg_patterns[num_arg_patterns]); @@ -2023,9 +2021,9 @@ exec_command_lo(PsqlScanState scan_state, bool active_branch, const char *cmd) } else if (strcmp(cmd + 3, "list") == 0) - success = listLargeObjects(false); + success = listLargeObjects(0); else if (strcmp(cmd + 3, "list+") == 0) - success = listLargeObjects(true); + success = listLargeObjects(1); else if (strcmp(cmd + 3, "unlink") == 0) { diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 1d18f7c6cd9..83f51d6c880 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -33,7 +33,7 @@ static const char *map_typename_pattern(const char *pattern); static bool describeOneTableDetails(const char *schemaname, const char *relationname, const char *oid, - bool verbose); + int verbose); static void add_tablespace_footer(printTableContent *const cont, char relkind, Oid tablespace, const bool newline); static void add_role_attribute(PQExpBuffer buf, const char *const str); @@ -68,7 +68,7 @@ static bool validateSQLNamePattern(PQExpBuffer buf, const char *pattern, * Takes an optional regexp to select particular aggregates */ bool -describeAggregates(const char *pattern, bool verbose, bool showSystem) +describeAggregates(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -168,7 +168,7 @@ describeAccessMethods(const char *pattern, int verbose) gettext_noop("Table"), gettext_noop("Type")); - if (verbose) + if (verbose > 0) { appendPQExpBuffer(&buf, ",\n amhandler AS \"%s\",\n" @@ -233,7 +233,7 @@ describeTablespaces(const char *pattern, int verbose) gettext_noop("Owner"), gettext_noop("Location")); - if (verbose) + if (verbose > 0) { appendPQExpBufferStr(&buf, ",\n "); printACLColumn(&buf, "spcacl"); @@ -298,7 +298,7 @@ describeTablespaces(const char *pattern, int verbose) bool describeFunctions(const char *functypes, const char *func_pattern, char **arg_patterns, int num_arg_patterns, - bool verbose, bool showSystem) + int verbose, bool showSystem) { bool showAggregate = strchr(functypes, 'a') != NULL; bool showNormal = strchr(functypes, 'n') != NULL; @@ -383,7 +383,7 @@ describeFunctions(const char *functypes, const char *func_pattern, gettext_noop("func"), gettext_noop("Type")); - if (verbose) + if (verbose > 0) { appendPQExpBuffer(&buf, ",\n CASE\n" @@ -438,7 +438,7 @@ describeFunctions(const char *functypes, const char *func_pattern, i, i, i, i, i, i); } - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, " LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang\n"); @@ -623,7 +623,7 @@ error_return: * describe types */ bool -describeTypes(const char *pattern, bool verbose, bool showSystem) +describeTypes(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -636,7 +636,7 @@ describeTypes(const char *pattern, bool verbose, bool showSystem) " pg_catalog.format_type(t.oid, NULL) AS \"%s\",\n", gettext_noop("Schema"), gettext_noop("Name")); - if (verbose) + if (verbose > 0) { appendPQExpBuffer(&buf, " t.typname AS \"%s\",\n" @@ -780,7 +780,7 @@ map_typename_pattern(const char *pattern) bool describeOperators(const char *oper_pattern, char **arg_patterns, int num_arg_patterns, - bool verbose, bool showSystem) + int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -816,7 +816,7 @@ describeOperators(const char *oper_pattern, gettext_noop("Right arg type"), gettext_noop("Result type")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, " o.oprcode AS \"%s\",\n", gettext_noop("Function")); @@ -1454,10 +1454,10 @@ error_return: * This routine finds the tables to be displayed, and calls * describeOneTableDetails for each one. * - * verbose: if true, this is \d+ + * verbose: this is \d+ (or \d++) */ bool -describeTableDetails(const char *pattern, bool verbose, bool showSystem) +describeTableDetails(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -1543,7 +1543,7 @@ static bool describeOneTableDetails(const char *schemaname, const char *relationname, const char *oid, - bool verbose) + int verbose) { bool retval = false; PQExpBufferData buf; @@ -1916,7 +1916,7 @@ describeOneTableDetails(const char *schemaname, " pg_catalog.pg_options_to_table(attfdwoptions)), ', ') || ')' END AS attfdwoptions"); fdwopts_col = cols++; } - if (verbose) + if (verbose > 0) { appendPQExpBufferStr(&buf, ",\n a.attstorage"); attstorage_col = cols++; @@ -2174,7 +2174,7 @@ describeOneTableDetails(const char *schemaname, "false as inhdetachpending"); /* If verbose, also request the partition constraint definition */ - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, ",\n pg_catalog.pg_get_partition_constraintdef(c.oid)"); appendPQExpBuffer(&buf, @@ -2197,7 +2197,7 @@ describeOneTableDetails(const char *schemaname, strcmp(detached, "t") == 0 ? " DETACH PENDING" : ""); printTableAddFooter(&cont, tmpbuf.data); - if (verbose) + if (verbose > 0) { char *partconstraintdef = NULL; @@ -3434,7 +3434,7 @@ describeOneTableDetails(const char *schemaname, printfPQExpBuffer(&buf, _("Number of partitions: %d"), tuples); printTableAddFooter(&cont, buf.data); } - else if (!verbose) + else if (verbose == 0) { /* print the number of child tables, if any */ if (tuples > 0) @@ -3486,7 +3486,7 @@ describeOneTableDetails(const char *schemaname, printTableAddFooter(&cont, buf.data); } - if (verbose && + if (verbose > 0 && (tableinfo.relkind == RELKIND_RELATION || tableinfo.relkind == RELKIND_MATVIEW) && @@ -3510,7 +3510,7 @@ describeOneTableDetails(const char *schemaname, } /* OIDs, if verbose and not a materialized view */ - if (verbose && tableinfo.relkind != RELKIND_MATVIEW && tableinfo.hasoids) + if (verbose > 0 && tableinfo.relkind != RELKIND_MATVIEW && tableinfo.hasoids) printTableAddFooter(&cont, _("Has OIDs: yes")); /* Tablespace info */ @@ -3518,7 +3518,7 @@ describeOneTableDetails(const char *schemaname, true); /* Access method info */ - if (verbose && tableinfo.relam != NULL && !pset.hide_tableam) + if (verbose > 0 && tableinfo.relam != NULL && !pset.hide_tableam) { printfPQExpBuffer(&buf, _("Access method: %s"), tableinfo.relam); printTableAddFooter(&cont, buf.data); @@ -3526,7 +3526,7 @@ describeOneTableDetails(const char *schemaname, } /* reloptions, if verbose */ - if (verbose && + if (verbose > 0 && tableinfo.reloptions && tableinfo.reloptions[0] != '\0') { const char *t = _("Options"); @@ -3626,7 +3626,7 @@ add_tablespace_footer(printTableContent *const cont, char relkind, * Describes roles. Any schema portion of the pattern is ignored. */ bool -describeRoles(const char *pattern, bool verbose, bool showSystem) +describeRoles(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -3648,11 +3648,12 @@ describeRoles(const char *pattern, bool verbose, bool showSystem) " r.rolcreaterole, r.rolcreatedb, r.rolcanlogin,\n" " r.rolconnlimit, r.rolvaliduntil"); - if (verbose) + if (verbose > 0) { appendPQExpBufferStr(&buf, "\n, pg_catalog.shobj_description(r.oid, 'pg_authid') AS description"); ncols++; } + appendPQExpBufferStr(&buf, "\n, r.rolreplication"); if (pset.sversion >= 90500) @@ -3687,7 +3688,7 @@ describeRoles(const char *pattern, bool verbose, bool showSystem) printTableAddHeader(&cont, gettext_noop("Role name"), true, align); printTableAddHeader(&cont, gettext_noop("Attributes"), true, align); - if (verbose) + if (verbose > 0) printTableAddHeader(&cont, gettext_noop("Description"), true, align); for (i = 0; i < nrows; i++) @@ -3744,7 +3745,7 @@ describeRoles(const char *pattern, bool verbose, bool showSystem) printTableAddCell(&cont, attr[i], false, false); - if (verbose) + if (verbose > 0) printTableAddCell(&cont, PQgetvalue(res, i, 8), false, false); } termPQExpBuffer(&buf); @@ -3921,7 +3922,7 @@ describeRoleGrants(const char *pattern, bool showSystem) * (any order of the above is fine) */ bool -listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSystem) +listTables(const char *tabtypes, const char *pattern, int verbose, bool showSystem) { bool showTables = strchr(tabtypes, 't') != NULL; bool showIndexes = strchr(tabtypes, 'i') != NULL; @@ -3980,7 +3981,7 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys cols_so_far++; } - if (verbose) + if (verbose > 0) { /* * Show whether a relation is permanent, temporary, or unlogged. @@ -4119,7 +4120,7 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys * and you can mix and match these in any order. */ bool -listPartitionedTables(const char *reltypes, const char *pattern, bool verbose) +listPartitionedTables(const char *reltypes, const char *pattern, int verbose) { bool showTables = strchr(reltypes, 't') != NULL; bool showIndexes = strchr(reltypes, 'i') != NULL; @@ -4194,7 +4195,7 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose) ",\n c2.oid::pg_catalog.regclass as \"%s\"", gettext_noop("Table")); - if (verbose) + if (verbose > 0) { if (showNested) { @@ -4229,7 +4230,7 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose) appendPQExpBufferStr(&buf, "\n LEFT JOIN pg_catalog.pg_inherits inh ON c.oid = inh.inhrelid"); - if (verbose) + if (verbose > 0) { if (pset.sversion < 120000) { @@ -4319,7 +4320,7 @@ listPartitionedTables(const char *reltypes, const char *pattern, bool verbose) * Describes languages. */ bool -listLanguages(const char *pattern, bool verbose, bool showSystem) +listLanguages(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -4335,7 +4336,7 @@ listLanguages(const char *pattern, bool verbose, bool showSystem) gettext_noop("Owner"), gettext_noop("Trusted")); - if (verbose) + if (verbose > 0) { appendPQExpBuffer(&buf, ",\n NOT l.lanispl AS \"%s\",\n" @@ -4395,7 +4396,7 @@ listLanguages(const char *pattern, bool verbose, bool showSystem) * Describes domains. */ bool -listDomains(const char *pattern, bool verbose, bool showSystem) +listDomains(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -4422,7 +4423,7 @@ listDomains(const char *pattern, bool verbose, bool showSystem) gettext_noop("Default"), gettext_noop("Check")); - if (verbose) + if (verbose > 0) { appendPQExpBufferStr(&buf, ",\n "); printACLColumn(&buf, "t.typacl"); @@ -4435,7 +4436,7 @@ listDomains(const char *pattern, bool verbose, bool showSystem) "\nFROM pg_catalog.pg_type t\n" " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, " LEFT JOIN pg_catalog.pg_description d " "ON d.classoid = t.tableoid AND d.objoid = t.oid " @@ -4478,7 +4479,7 @@ listDomains(const char *pattern, bool verbose, bool showSystem) * Describes conversions. */ bool -listConversions(const char *pattern, bool verbose, bool showSystem) +listConversions(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -4502,7 +4503,7 @@ listConversions(const char *pattern, bool verbose, bool showSystem) gettext_noop("yes"), gettext_noop("no"), gettext_noop("Default?")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\n d.description AS \"%s\"", gettext_noop("Description")); @@ -4512,7 +4513,7 @@ listConversions(const char *pattern, bool verbose, bool showSystem) " JOIN pg_catalog.pg_namespace n " "ON n.oid = c.connamespace\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, "LEFT JOIN pg_catalog.pg_description d " "ON d.classoid = c.tableoid\n" @@ -4558,7 +4559,7 @@ listConversions(const char *pattern, bool verbose, bool showSystem) * Describes configuration parameters. */ bool -describeConfigurationParameters(const char *pattern, bool verbose, +describeConfigurationParameters(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; @@ -4626,7 +4627,7 @@ describeConfigurationParameters(const char *pattern, bool verbose, * Describes Event Triggers. */ bool -listEventTriggers(const char *pattern, bool verbose) +listEventTriggers(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -4667,7 +4668,7 @@ listEventTriggers(const char *pattern, bool verbose) gettext_noop("Enabled"), gettext_noop("Function"), gettext_noop("Tags")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\npg_catalog.obj_description(e.oid, 'pg_event_trigger') as \"%s\"", gettext_noop("Description")); @@ -4802,7 +4803,7 @@ listExtendedStats(const char *pattern) * Describes casts. */ bool -listCasts(const char *pattern, bool verbose) +listCasts(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -4843,7 +4844,7 @@ listCasts(const char *pattern, bool verbose) gettext_noop("yes"), gettext_noop("Implicit?")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\n d.description AS \"%s\"", gettext_noop("Description")); @@ -4864,7 +4865,7 @@ listCasts(const char *pattern, bool verbose) " LEFT JOIN pg_catalog.pg_namespace nt\n" " ON nt.oid = tt.typnamespace\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, " LEFT JOIN pg_catalog.pg_description d\n" " ON d.classoid = c.tableoid AND d.objoid = " @@ -4920,7 +4921,7 @@ error_return: * Describes collations. */ bool -listCollations(const char *pattern, bool verbose, bool showSystem) +listCollations(const char *pattern, int verbose, bool showSystem) { PQExpBufferData buf; PGresult *res; @@ -4984,7 +4985,7 @@ listCollations(const char *pattern, bool verbose, bool showSystem) gettext_noop("yes"), gettext_noop("Deterministic?")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\n pg_catalog.obj_description(c.oid, 'pg_collation') AS \"%s\"", gettext_noop("Description")); @@ -5053,7 +5054,7 @@ listSchemas(const char *pattern, int verbose, bool showSystem) gettext_noop("Name"), gettext_noop("Owner")); - if (verbose) + if (verbose > 0) { appendPQExpBufferStr(&buf, ",\n "); printACLColumn(&buf, "n.nspacl"); @@ -5164,13 +5165,13 @@ error_return: * list text search parsers */ bool -listTSParsers(const char *pattern, bool verbose) +listTSParsers(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; printQueryOpt myopt = pset.popt; - if (verbose) + if (verbose > 0) return listTSParsersVerbose(pattern); initPQExpBuffer(&buf); @@ -5411,7 +5412,7 @@ describeOneTSParser(const char *oid, const char *nspname, const char *prsname) * list text search dictionaries */ bool -listTSDictionaries(const char *pattern, bool verbose) +listTSDictionaries(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -5426,7 +5427,7 @@ listTSDictionaries(const char *pattern, bool verbose) gettext_noop("Schema"), gettext_noop("Name")); - if (verbose) + if (verbose > 0) { appendPQExpBuffer(&buf, " ( SELECT COALESCE(nt.nspname, '(null)')::pg_catalog.text || '.' || t.tmplname FROM\n" @@ -5476,7 +5477,7 @@ listTSDictionaries(const char *pattern, bool verbose) * list text search templates */ bool -listTSTemplates(const char *pattern, bool verbose) +listTSTemplates(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -5484,7 +5485,7 @@ listTSTemplates(const char *pattern, bool verbose) initPQExpBuffer(&buf); - if (verbose) + if (verbose > 0) printfPQExpBuffer(&buf, "SELECT\n" " n.nspname AS \"%s\",\n" @@ -5541,13 +5542,13 @@ listTSTemplates(const char *pattern, bool verbose) * list text search configurations */ bool -listTSConfigs(const char *pattern, bool verbose) +listTSConfigs(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; printQueryOpt myopt = pset.popt; - if (verbose) + if (verbose > 0) return listTSConfigsVerbose(pattern); initPQExpBuffer(&buf); @@ -5745,7 +5746,7 @@ describeOneTSConfig(const char *oid, const char *nspname, const char *cfgname, * Describes foreign-data wrappers */ bool -listForeignDataWrappers(const char *pattern, bool verbose) +listForeignDataWrappers(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -5762,7 +5763,7 @@ listForeignDataWrappers(const char *pattern, bool verbose) gettext_noop("Handler"), gettext_noop("Validator")); - if (verbose) + if (verbose > 0) { appendPQExpBufferStr(&buf, ",\n "); printACLColumn(&buf, "fdwacl"); @@ -5780,7 +5781,7 @@ listForeignDataWrappers(const char *pattern, bool verbose) appendPQExpBufferStr(&buf, "\nFROM pg_catalog.pg_foreign_data_wrapper fdw\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, "LEFT JOIN pg_catalog.pg_description d\n" " ON d.classoid = fdw.tableoid " @@ -5816,7 +5817,7 @@ listForeignDataWrappers(const char *pattern, bool verbose) * Describes foreign servers. */ bool -listForeignServers(const char *pattern, bool verbose) +listForeignServers(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -5831,7 +5832,7 @@ listForeignServers(const char *pattern, bool verbose) gettext_noop("Owner"), gettext_noop("Foreign-data wrapper")); - if (verbose) + if (verbose > 0) { appendPQExpBufferStr(&buf, ",\n "); printACLColumn(&buf, "s.srvacl"); @@ -5856,7 +5857,7 @@ listForeignServers(const char *pattern, bool verbose) "\nFROM pg_catalog.pg_foreign_server s\n" " JOIN pg_catalog.pg_foreign_data_wrapper f ON f.oid=s.srvfdw\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, "LEFT JOIN pg_catalog.pg_description d\n " "ON d.classoid = s.tableoid AND d.objoid = s.oid " @@ -5892,7 +5893,7 @@ listForeignServers(const char *pattern, bool verbose) * Describes user mappings. */ bool -listUserMappings(const char *pattern, bool verbose) +listUserMappings(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -5905,7 +5906,7 @@ listUserMappings(const char *pattern, bool verbose) gettext_noop("Server"), gettext_noop("User name")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\n CASE WHEN umoptions IS NULL THEN '' ELSE " " '(' || pg_catalog.array_to_string(ARRAY(SELECT " @@ -5947,7 +5948,7 @@ listUserMappings(const char *pattern, bool verbose) * Describes foreign tables. */ bool -listForeignTables(const char *pattern, bool verbose) +listForeignTables(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -5962,7 +5963,7 @@ listForeignTables(const char *pattern, bool verbose) gettext_noop("Table"), gettext_noop("Server")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\n CASE WHEN ftoptions IS NULL THEN '' ELSE " " '(' || pg_catalog.array_to_string(ARRAY(SELECT " @@ -5982,7 +5983,7 @@ listForeignTables(const char *pattern, bool verbose) " ON n.oid = c.relnamespace\n" " INNER JOIN pg_catalog.pg_foreign_server s" " ON s.oid = ft.ftserver\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, " LEFT JOIN pg_catalog.pg_description d\n" " ON d.classoid = c.tableoid AND " @@ -6542,7 +6543,7 @@ error_return: * Takes an optional regexp to select particular subscriptions */ bool -describeSubscriptions(const char *pattern, bool verbose) +describeSubscriptions(const char *pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -6573,7 +6574,7 @@ describeSubscriptions(const char *pattern, bool verbose) gettext_noop("Enabled"), gettext_noop("Publication")); - if (verbose) + if (verbose > 0) { /* Binary mode and streaming are only supported in v14 and higher */ if (pset.sversion >= 140000) @@ -6695,7 +6696,7 @@ printACLColumn(PQExpBuffer buf, const char *colname) */ bool listOperatorClasses(const char *access_method_pattern, - const char *type_pattern, bool verbose) + const char *type_pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -6730,7 +6731,7 @@ listOperatorClasses(const char *access_method_pattern, gettext_noop("yes"), gettext_noop("no"), gettext_noop("Default?")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\n CASE\n" " WHEN pg_catalog.pg_opfamily_is_visible(of.oid)\n" @@ -6746,7 +6747,7 @@ listOperatorClasses(const char *access_method_pattern, " LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.opcnamespace\n" " LEFT JOIN pg_catalog.pg_type t ON t.oid = c.opcintype\n" " LEFT JOIN pg_catalog.pg_namespace tn ON tn.oid = t.typnamespace\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, " LEFT JOIN pg_catalog.pg_opfamily of ON of.oid = c.opcfamily\n" " LEFT JOIN pg_catalog.pg_namespace ofn ON ofn.oid = of.opfnamespace\n"); @@ -6796,7 +6797,7 @@ error_return: */ bool listOperatorFamilies(const char *access_method_pattern, - const char *type_pattern, bool verbose) + const char *type_pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -6821,7 +6822,7 @@ listOperatorFamilies(const char *access_method_pattern, gettext_noop("AM"), gettext_noop("Operator family"), gettext_noop("Applicable types")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ",\n pg_catalog.pg_get_userbyid(f.opfowner) AS \"%s\"\n", gettext_noop("Owner")); @@ -6885,7 +6886,7 @@ error_return: */ bool listOpFamilyOperators(const char *access_method_pattern, - const char *family_pattern, bool verbose) + const char *family_pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -6918,7 +6919,7 @@ listOpFamilyOperators(const char *access_method_pattern, gettext_noop("search"), gettext_noop("Purpose")); - if (verbose) + if (verbose > 0) appendPQExpBuffer(&buf, ", ofs.opfname AS \"%s\"\n", gettext_noop("Sort opfamily")); @@ -6927,7 +6928,7 @@ listOpFamilyOperators(const char *access_method_pattern, " LEFT JOIN pg_catalog.pg_opfamily of ON of.oid = o.amopfamily\n" " LEFT JOIN pg_catalog.pg_am am ON am.oid = of.opfmethod AND am.oid = o.amopmethod\n" " LEFT JOIN pg_catalog.pg_namespace nsf ON of.opfnamespace = nsf.oid\n"); - if (verbose) + if (verbose > 0) appendPQExpBufferStr(&buf, " LEFT JOIN pg_catalog.pg_opfamily ofs ON ofs.oid = o.amopsortfamily\n"); @@ -6983,7 +6984,7 @@ error_return: */ bool listOpFamilyFunctions(const char *access_method_pattern, - const char *family_pattern, bool verbose) + const char *family_pattern, int verbose) { PQExpBufferData buf; PGresult *res; @@ -7010,7 +7011,7 @@ listOpFamilyFunctions(const char *access_method_pattern, gettext_noop("Registered right type"), gettext_noop("Number")); - if (!verbose) + if (verbose == 0) appendPQExpBuffer(&buf, ", p.proname AS \"%s\"\n", gettext_noop("Function")); @@ -7071,7 +7072,7 @@ error_return: * Lists large objects */ bool -listLargeObjects(bool verbose) +listLargeObjects(int verbose) { PQExpBufferData buf; PGresult *res; @@ -7085,7 +7086,7 @@ listLargeObjects(bool verbose) gettext_noop("ID"), gettext_noop("Owner")); - if (verbose) + if (verbose > 0) { printACLColumn(&buf, "lomacl"); appendPQExpBufferStr(&buf, ",\n "); diff --git a/src/bin/psql/describe.h b/src/bin/psql/describe.h index 10271ba1393..e0181bb3877 100644 --- a/src/bin/psql/describe.h +++ b/src/bin/psql/describe.h @@ -10,7 +10,7 @@ /* \da */ -extern bool describeAggregates(const char *pattern, bool verbose, bool showSystem); +extern bool describeAggregates(const char *pattern, int verbose, bool showSystem); /* \dA */ extern bool describeAccessMethods(const char *pattern, int verbose); @@ -21,18 +21,18 @@ extern bool describeTablespaces(const char *pattern, int verbose); /* \df, \dfa, \dfn, \dft, \dfw, etc. */ extern bool describeFunctions(const char *functypes, const char *func_pattern, char **arg_patterns, int num_arg_patterns, - bool verbose, bool showSystem); + int verbose, bool showSystem); /* \dT */ -extern bool describeTypes(const char *pattern, bool verbose, bool showSystem); +extern bool describeTypes(const char *pattern, int verbose, bool showSystem); /* \do */ extern bool describeOperators(const char *oper_pattern, char **arg_patterns, int num_arg_patterns, - bool verbose, bool showSystem); + int verbose, bool showSystem); /* \du, \dg */ -extern bool describeRoles(const char *pattern, bool verbose, bool showSystem); +extern bool describeRoles(const char *pattern, int verbose, bool showSystem); /* \drds */ extern bool listDbRoleSettings(const char *pattern, const char *pattern2); @@ -50,62 +50,62 @@ extern bool listDefaultACLs(const char *pattern); extern bool objectDescription(const char *pattern, bool showSystem); /* \d foo */ -extern bool describeTableDetails(const char *pattern, bool verbose, bool showSystem); +extern bool describeTableDetails(const char *pattern, int verbose, bool showSystem); /* \dF */ -extern bool listTSConfigs(const char *pattern, bool verbose); +extern bool listTSConfigs(const char *pattern, int verbose); /* \dFp */ -extern bool listTSParsers(const char *pattern, bool verbose); +extern bool listTSParsers(const char *pattern, int verbose); /* \dFd */ -extern bool listTSDictionaries(const char *pattern, bool verbose); +extern bool listTSDictionaries(const char *pattern, int verbose); /* \dFt */ -extern bool listTSTemplates(const char *pattern, bool verbose); +extern bool listTSTemplates(const char *pattern, int verbose); /* \l */ extern bool listAllDbs(const char *pattern, int verbose); /* \dt, \di, \ds, \dS, etc. */ -extern bool listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSystem); +extern bool listTables(const char *tabtypes, const char *pattern, int verbose, bool showSystem); /* \dP */ -extern bool listPartitionedTables(const char *reltypes, const char *pattern, bool verbose); +extern bool listPartitionedTables(const char *reltypes, const char *pattern, int verbose); /* \dD */ -extern bool listDomains(const char *pattern, bool verbose, bool showSystem); +extern bool listDomains(const char *pattern, int verbose, bool showSystem); /* \dc */ -extern bool listConversions(const char *pattern, bool verbose, bool showSystem); +extern bool listConversions(const char *pattern, int verbose, bool showSystem); /* \dconfig */ -extern bool describeConfigurationParameters(const char *pattern, bool verbose, +extern bool describeConfigurationParameters(const char *pattern, int verbose, bool showSystem); /* \dC */ -extern bool listCasts(const char *pattern, bool verbose); +extern bool listCasts(const char *pattern, int verbose); /* \dO */ -extern bool listCollations(const char *pattern, bool verbose, bool showSystem); +extern bool listCollations(const char *pattern, int verbose, bool showSystem); /* \dn */ extern bool listSchemas(const char *pattern, int verbose, bool showSystem); /* \dew */ -extern bool listForeignDataWrappers(const char *pattern, bool verbose); +extern bool listForeignDataWrappers(const char *pattern, int verbose); /* \des */ -extern bool listForeignServers(const char *pattern, bool verbose); +extern bool listForeignServers(const char *pattern, int verbose); /* \deu */ -extern bool listUserMappings(const char *pattern, bool verbose); +extern bool listUserMappings(const char *pattern, int verbose); /* \det */ -extern bool listForeignTables(const char *pattern, bool verbose); +extern bool listForeignTables(const char *pattern, int verbose); /* \dL */ -extern bool listLanguages(const char *pattern, bool verbose, bool showSystem); +extern bool listLanguages(const char *pattern, int verbose, bool showSystem); /* \dx */ extern bool listExtensions(const char *pattern); @@ -117,7 +117,7 @@ extern bool listExtensionContents(const char *pattern); extern bool listExtendedStats(const char *pattern); /* \dy */ -extern bool listEventTriggers(const char *pattern, bool verbose); +extern bool listEventTriggers(const char *pattern, int verbose); /* \dRp */ bool listPublications(const char *pattern); @@ -126,27 +126,27 @@ bool listPublications(const char *pattern); bool describePublications(const char *pattern); /* \dRs */ -bool describeSubscriptions(const char *pattern, bool verbose); +bool describeSubscriptions(const char *pattern, int verbose); /* \dAc */ extern bool listOperatorClasses(const char *access_method_pattern, const char *type_pattern, - bool verbose); + int verbose); /* \dAf */ extern bool listOperatorFamilies(const char *access_method_pattern, const char *type_pattern, - bool verbose); + int verbose); /* \dAo */ extern bool listOpFamilyOperators(const char *access_method_pattern, - const char *family_pattern, bool verbose); + const char *family_pattern, int verbose); /* \dAp */ extern bool listOpFamilyFunctions(const char *access_method_pattern, - const char *family_pattern, bool verbose); + const char *family_pattern, int verbose); /* \dl or \lo_list */ -extern bool listLargeObjects(bool verbose); +extern bool listLargeObjects(int verbose); #endif /* DESCRIBE_H */ -- 2.42.0