]> granicus.if.org Git - postgresql/commitdiff
Rework echo_hidden for \sf and \ef from commit e4d2817.
authorAndrew Dunstan <andrew@dunslane.net>
Sat, 22 Nov 2014 14:39:01 +0000 (09:39 -0500)
committerAndrew Dunstan <andrew@dunslane.net>
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);