On Tue, May 31, 2022 at 1:20 AM Amit Langote <amitlangot...@gmail.com>
wrote:

> Hi,
>
> On Thu, May 26, 2022 at 11:35 AM Zhihong Yu <z...@yugabyte.com> wrote:
> >> The changes in pgstat_progress_end_command() and
> >> pg_stat_get_progress_info() update st_progress_command_target
> >> depending on the command type involved, breaking the existing contract
> >> of  those routines, particularly the fact that the progress fields
> >> *should* be reset in an error stack.
>
> +1 to what Michael said here.  I don't think the following changes are
> acceptable:
>
> @@ -106,7 +106,13 @@ pgstat_progress_end_command(void)
>         return;
>
>     PGSTAT_BEGIN_WRITE_ACTIVITY(beentry);
> -   beentry->st_progress_command = PROGRESS_COMMAND_INVALID;
> -   beentry->st_progress_command_target = InvalidOid;
> +   if (beentry->st_progress_command == PROGRESS_COMMAND_COPY)
> +       // We want to show the relation for the most recent COPY command
> +       beentry->st_progress_command = PROGRESS_COMMAND_COPY_DONE;
> +   else
> +   {
> +       beentry->st_progress_command = PROGRESS_COMMAND_INVALID;
> +       beentry->st_progress_command_target = InvalidOid;
> +   }
>     PGSTAT_END_WRITE_ACTIVITY(beentry);
>  }
>
> pgstat_progress_end_command() is generic infrastructure and there
> shouldn't be anything COPY-specific there.
>
> > I searched the code base for how st_progress_command_target is used.
> > In case there is subsequent command following the COPY,
> st_progress_command_target would be set to the Oid
> > of the subsequent command.
> > In case there is no subsequent command following the COPY command, it
> seems leaving st_progress_command_target as
> > the Oid of the COPY command wouldn't hurt.
> >
> > Maybe you can let me know what side effect not resetting
> st_progress_command_target would have.
> >
> > As an alternative, upon seeing PROGRESS_COMMAND_COPY_DONE, we can
> transfer the value of
> > st_progress_command_target to a new field called, say,
> st_progress_command_previous_target (
> > and resetting st_progress_command_target as usual).
>
> That doesn't sound like a good idea.
>
> As others have said, there's no point in adding a status field to
> pg_stat_progress_copy that only tells whether a COPY is running or
> not.  You can already do that by looking at the output of `select *
> from pg_stat_progress_copy`.  If the COPY you're interested in is
> running, you'll find the corresponding row in the view.  The row is
> made to disappear from the view the instance the COPY finishes, either
> successfully or due to an error.  Whichever is the case will be known
> in the connection that initiated the COPY and you may find it in the
> server log.  I don't think we should make Postgres remember anything
> about that in the shared memory, or at least not with one-off
> adjustments of the shared progress reporting state like in the
> proposed patch.
>
> --
> Thanks, Amit Langote
> EDB: http://www.enterprisedb.com


Hi, Matthias, Michael and Amit:
Thanks for your time reviewing my patch.

I took note of what you said.

If I can make the changes more general, I would circle back.

Cheers

Reply via email to