Commit 686f15e3 authored by Tom Lane's avatar Tom Lane

Adjust pgbench so it won't spit up on non-select queries returning

tuples, which is entirely possible with custom scripts (consider
RETURNING, EXPLAIN, etc).
parent 5a7471c3
/* /*
* $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.60 2007/01/10 01:18:40 ishii Exp $ * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.61 2007/01/22 02:17:30 tgl Exp $
* *
* pgbench: a simple benchmark program for PostgreSQL * pgbench: a simple benchmark program for PostgreSQL
* written by Tatsuo Ishii * written by Tatsuo Ishii
...@@ -243,17 +243,23 @@ discard_response(CState * state) ...@@ -243,17 +243,23 @@ discard_response(CState * state)
/* check to see if the SQL result was good */ /* check to see if the SQL result was good */
static int static int
check(CState * state, PGresult *res, int n, int good) check(CState *state, PGresult *res, int n)
{ {
CState *st = &state[n]; CState *st = &state[n];
if (res && PQresultStatus(res) != good) switch (PQresultStatus(res))
{ {
fprintf(stderr, "Client %d aborted in state %d: %s", n, st->state, PQerrorMessage(st->con)); case PGRES_COMMAND_OK:
remains--; /* I've aborted */ case PGRES_TUPLES_OK:
PQfinish(st->con); /* OK */
st->con = NULL; break;
return (-1); default:
fprintf(stderr, "Client %d aborted in state %d: %s",
n, st->state, PQerrorMessage(st->con));
remains--; /* I've aborted */
PQfinish(st->con);
st->con = NULL;
return (-1);
} }
return (0); /* OK */ return (0); /* OK */
} }
...@@ -461,15 +467,10 @@ top: ...@@ -461,15 +467,10 @@ top:
if (commands[st->state]->type == SQL_COMMAND) if (commands[st->state]->type == SQL_COMMAND)
{ {
res = PQgetResult(st->con); res = PQgetResult(st->con);
if (pg_strncasecmp(commands[st->state]->argv[0], "select", 6) != 0) if (check(state, res, n))
{
if (check(state, res, n, PGRES_COMMAND_OK))
return;
}
else
{ {
if (check(state, res, n, PGRES_TUPLES_OK)) PQclear(res);
return; return;
} }
PQclear(res); PQclear(res);
discard_response(st); discard_response(st);
......
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