Commit b475d25f authored by Tom Lane's avatar Tom Lane

Cause psql to report both the returned data and the command status tag

for INSERT/UPDATE/DELETE RETURNING.  Per discussion.
parent fbc7f59b
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2006, PostgreSQL Global Development Group * Copyright (c) 2000-2006, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.123 2006/08/11 19:20:59 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.124 2006/08/13 21:10:04 tgl Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "common.h" #include "common.h"
...@@ -683,6 +683,36 @@ ProcessCopyResult(PGresult *results) ...@@ -683,6 +683,36 @@ ProcessCopyResult(PGresult *results)
} }
/*
* PrintQueryStatus: report command status as required
*
* Note: Utility function for use by PrintQueryResults() only.
*/
static void
PrintQueryStatus(PGresult *results)
{
char buf[16];
if (!QUIET())
{
if (pset.popt.topt.format == PRINT_HTML)
{
fputs("<p>", pset.queryFout);
html_escaped_print(PQcmdStatus(results), pset.queryFout);
fputs("</p>\n", pset.queryFout);
}
else
fprintf(pset.queryFout, "%s\n", PQcmdStatus(results));
}
if (pset.logfile)
fprintf(pset.logfile, "%s\n", PQcmdStatus(results));
snprintf(buf, sizeof(buf), "%u", (unsigned int) PQoidValue(results));
SetVariable(pset.vars, "LASTOID", buf);
}
/* /*
* PrintQueryResults: print out query results as required * PrintQueryResults: print out query results as required
* *
...@@ -694,6 +724,7 @@ static bool ...@@ -694,6 +724,7 @@ static bool
PrintQueryResults(PGresult *results) PrintQueryResults(PGresult *results)
{ {
bool success = false; bool success = false;
const char *cmdstatus;
if (!results) if (!results)
return false; return false;
...@@ -701,33 +732,20 @@ PrintQueryResults(PGresult *results) ...@@ -701,33 +732,20 @@ PrintQueryResults(PGresult *results)
switch (PQresultStatus(results)) switch (PQresultStatus(results))
{ {
case PGRES_TUPLES_OK: case PGRES_TUPLES_OK:
/* print the data ... */
success = PrintQueryTuples(results); success = PrintQueryTuples(results);
/* if it's INSERT/UPDATE/DELETE RETURNING, also print status */
cmdstatus = PQcmdStatus(results);
if (strncmp(cmdstatus, "INSERT", 6) == 0 ||
strncmp(cmdstatus, "UPDATE", 6) == 0 ||
strncmp(cmdstatus, "DELETE", 6) == 0)
PrintQueryStatus(results);
break; break;
case PGRES_COMMAND_OK: case PGRES_COMMAND_OK:
{ PrintQueryStatus(results);
char buf[10];
success = true; success = true;
snprintf(buf, sizeof(buf),
"%u", (unsigned int) PQoidValue(results));
if (!QUIET())
{
if (pset.popt.topt.format == PRINT_HTML)
{
fputs("<p>", pset.queryFout);
html_escaped_print(PQcmdStatus(results),
pset.queryFout);
fputs("</p>\n", pset.queryFout);
}
else
fprintf(pset.queryFout, "%s\n", PQcmdStatus(results));
}
if (pset.logfile)
fprintf(pset.logfile, "%s\n", PQcmdStatus(results));
SetVariable(pset.vars, "LASTOID", buf);
break; break;
}
case PGRES_EMPTY_QUERY: case PGRES_EMPTY_QUERY:
success = true; success = true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment