diff --git a/src/backend/commands/copyfromparse.c b/src/backend/commands/copyfromparse.c
index 5868a7fa11f63..af1df0c1f149b 100644
--- a/src/backend/commands/copyfromparse.c
+++ b/src/backend/commands/copyfromparse.c
@@ -249,7 +249,9 @@ CopyGetData(CopyFromState cstate, void *databuf, int minread, int maxread)
switch (cstate->copy_src)
{
case COPY_FILE:
+ pgstat_report_wait_start(WAIT_EVENT_COPY_DATA_READ);
bytesread = fread(databuf, 1, maxread, cstate->copy_file);
+ pgstat_report_wait_end();
if (ferror(cstate->copy_file))
ereport(ERROR,
(errcode_for_file_access(),
diff --git a/src/backend/commands/copyto.c b/src/backend/commands/copyto.c
index 4ab4a3893d5fd..7d146e95b2d3a 100644
--- a/src/backend/commands/copyto.c
+++ b/src/backend/commands/copyto.c
@@ -454,6 +454,7 @@ CopySendEndOfRow(CopyToState cstate)
switch (cstate->copy_dest)
{
case COPY_FILE:
+ pgstat_report_wait_start(WAIT_EVENT_COPY_DATA_WRITE);
if (fwrite(fe_msgbuf->data, fe_msgbuf->len, 1,
cstate->copy_file) != 1 ||
ferror(cstate->copy_file))
@@ -486,6 +487,7 @@ CopySendEndOfRow(CopyToState cstate)
(errcode_for_file_access(),
errmsg("could not write to COPY file: %m")));
}
+ pgstat_report_wait_end();
break;
case COPY_FRONTEND:
/* Dump the accumulated row as one CopyData message */
diff --git a/src/backend/utils/activity/wait_event_names.txt b/src/backend/utils/activity/wait_event_names.txt
index 3299de23bb3ad..a7e4d5182a979 100644
--- a/src/backend/utils/activity/wait_event_names.txt
+++ b/src/backend/utils/activity/wait_event_names.txt
@@ -210,6 +210,8 @@ CONTROL_FILE_SYNC "Waiting for the pg_control file to reach
CONTROL_FILE_SYNC_UPDATE "Waiting for an update to the pg_control file to reach durable storage."
CONTROL_FILE_WRITE "Waiting for a write to the pg_control file."
CONTROL_FILE_WRITE_UPDATE "Waiting for a write to update the pg_control file."
+COPY_DATA_READ "Waiting for a read from a file or program during COPY FROM."
+COPY_DATA_WRITE "Waiting for a write to a file or program during COPY TO."
COPY_FILE_COPY "Waiting for a file copy operation."
COPY_FILE_READ "Waiting for a read during a file copy operation."
COPY_FILE_WRITE "Waiting for a write during a file copy operation."