summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/pgbench/pgbench.c14
-rw-r--r--src/bin/pgbench/t/001_pgbench_with_server.pl11
2 files changed, 25 insertions, 0 deletions
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 36c6469149e..1515ed405ba 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -3359,6 +3359,20 @@ readCommandResponse(CState *st, MetaCommand meta, char *varprefix)
PQresultErrorMessage(res));
break;
+ case PGRES_COPY_IN:
+ case PGRES_COPY_OUT:
+ case PGRES_COPY_BOTH:
+ pg_log_error("COPY is not supported in pgbench, aborting");
+
+ /*
+ * We need to exit the copy state. Otherwise, PQgetResult()
+ * will always return an empty PGresult as an effect of
+ * getCopyResult(), leading to an infinite loop in the error
+ * cleanup done below.
+ */
+ PQendcopy(st->con);
+ goto error;
+
case PGRES_NONFATAL_ERROR:
case PGRES_FATAL_ERROR:
st->estatus = getSQLErrorStatus(PQresultErrorField(res,
diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl
index 7dd78940300..f61dcf68234 100644
--- a/src/bin/pgbench/t/001_pgbench_with_server.pl
+++ b/src/bin/pgbench/t/001_pgbench_with_server.pl
@@ -1810,6 +1810,17 @@ update counter set i = i+1 returning i \gset
}
});
+# Test copy in pgbench
+$node->pgbench(
+ '-t 10',
+ 2,
+ [],
+ [ qr{COPY is not supported in pgbench, aborting} ],
+ 'Test copy in script',
+ {
+ '001_copy' => q{ COPY pgbench_accounts FROM stdin }
+ });
+
# Clean up
$node->safe_psql('postgres', 'DROP TABLE counter;');