Rework echo_hidden for \sf and \ef from commit e4d2817
.
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.
This commit is contained in:
parent
447770404c
commit
eca2b9ba3e
|
@ -2924,6 +2924,34 @@ do_watch(PQExpBuffer query_buf, long sleep)
|
||||||
return true;
|
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
|
* 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
|
* 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);
|
appendStringLiteralConn(query, desc, pset.db);
|
||||||
appendPQExpBuffer(query, "::pg_catalog.%s::pg_catalog.oid",
|
appendPQExpBuffer(query, "::pg_catalog.%s::pg_catalog.oid",
|
||||||
strchr(desc, '(') ? "regprocedure" : "regproc");
|
strchr(desc, '(') ? "regprocedure" : "regproc");
|
||||||
|
if (!lookup_function_echo_hidden(query->data))
|
||||||
res = PSQLexec(query->data);
|
return false;
|
||||||
|
res = PQexec(pset.db, query->data);
|
||||||
if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1)
|
if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1)
|
||||||
*foid = atooid(PQgetvalue(res, 0, 0));
|
*foid = atooid(PQgetvalue(res, 0, 0));
|
||||||
else
|
else
|
||||||
|
@ -2975,7 +3004,9 @@ get_create_function_cmd(Oid oid, PQExpBuffer buf)
|
||||||
query = createPQExpBuffer();
|
query = createPQExpBuffer();
|
||||||
printfPQExpBuffer(query, "SELECT pg_catalog.pg_get_functiondef(%u)", oid);
|
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)
|
if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1)
|
||||||
{
|
{
|
||||||
resetPQExpBuffer(buf);
|
resetPQExpBuffer(buf);
|
||||||
|
|
Loading…
Reference in New Issue