Rework echo_hidden for \sf and \ef from commit e4d2817.
authorAndrew Dunstan <[email protected]>
Sat, 22 Nov 2014 14:39:01 +0000 (09:39 -0500)
committerAndrew Dunstan <[email protected]>
Sat, 22 Nov 2014 14:39:01 +0000 (09:39 -0500)
PSQLexec's error reporting turns out to be too verbose for this case, so
revert to using PQexec instead with minimal error reporting. Prior to
calling PQexec, we call a function that mimics just the echo_hidden
piece of PSQLexec.

src/bin/psql/command.c

index 36d5e36977db6912687e7ef55943c5f8ca7dd459..162fcf140130f773f76d7da3e40c4b2f66a76822 100644 (file)
@@ -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);