mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Cause psql to report both the returned data and the command status tag
for INSERT/UPDATE/DELETE RETURNING. Per discussion.
This commit is contained in:
@ -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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
|||||||
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)
|
|||||||
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;
|
||||||
|
break;
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
case PGRES_EMPTY_QUERY:
|
case PGRES_EMPTY_QUERY:
|
||||||
success = true;
|
success = true;
|
||||||
|
Reference in New Issue
Block a user