diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 36d5e36977..162fcf1401 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -2924,6 +2924,34 @@ do_watch(PQExpBuffer query_buf, long sleep) return true; } +/* + * a little code borrowed from PSQLexec() to manage ECHO_HIDDEN output. + * returns true unless we have ECHO_HIDDEN_NOEXEC. + */ +static bool +lookup_function_echo_hidden(char * query) +{ + if (pset.echo_hidden != PSQL_ECHO_HIDDEN_OFF) + { + printf(_("********* QUERY **********\n" + "%s\n" + "**************************\n\n"), query); + fflush(stdout); + if (pset.logfile) + { + fprintf(pset.logfile, + _("********* QUERY **********\n" + "%s\n" + "**************************\n\n"), query); + fflush(pset.logfile); + } + + if (pset.echo_hidden == PSQL_ECHO_HIDDEN_NOEXEC) + return false; + } + return true; +} + /* * This function takes a function description, e.g. "x" or "x(int)", and * issues a query on the given connection to retrieve the function's OID @@ -2945,8 +2973,9 @@ lookup_function_oid(const char *desc, Oid *foid) appendStringLiteralConn(query, desc, pset.db); appendPQExpBuffer(query, "::pg_catalog.%s::pg_catalog.oid", strchr(desc, '(') ? "regprocedure" : "regproc"); - - res = PSQLexec(query->data); + if (!lookup_function_echo_hidden(query->data)) + return false; + res = PQexec(pset.db, query->data); if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1) *foid = atooid(PQgetvalue(res, 0, 0)); else @@ -2975,7 +3004,9 @@ get_create_function_cmd(Oid oid, PQExpBuffer buf) query = createPQExpBuffer(); printfPQExpBuffer(query, "SELECT pg_catalog.pg_get_functiondef(%u)", oid); - res = PSQLexec(query->data); + if (!lookup_function_echo_hidden(query->data)) + return false; + res = PQexec(pset.db, query->data); if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1) { resetPQExpBuffer(buf);