diff options
Diffstat (limited to 'src/bin/psql/command.c')
-rw-r--r-- | src/bin/psql/command.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index e111cee5568..abb18a19c23 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -721,7 +721,38 @@ exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) success = listTables("tvmsE", NULL, show_verbose, show_system); break; case 'A': - success = describeAccessMethods(pattern, show_verbose); + { + char *pattern2 = NULL; + + if (pattern && cmd[2] != '\0' && cmd[2] != '+') + pattern2 = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, true); + + switch (cmd[2]) + { + case '\0': + case '+': + success = describeAccessMethods(pattern, show_verbose); + break; + case 'c': + success = listOperatorClasses(pattern, pattern2, show_verbose); + break; + case 'f': + success = listOperatorFamilies(pattern, pattern2, show_verbose); + break; + case 'o': + success = listOpFamilyOperators(pattern, pattern2, show_verbose); + break; + case 'p': + success = listOpFamilyProcedures(pattern, pattern2); + break; + default: + status = PSQL_CMD_UNKNOWN; + break; + } + + if (pattern2) + free(pattern2); + } break; case 'a': success = describeAggregates(pattern, show_verbose, show_system); |