Re: bug: copy progress reporting of backends which run multiple COPYs

Поиск
Список
Период
Сортировка
От Matthias van de Meent
Тема Re: bug: copy progress reporting of backends which run multiple COPYs
Дата
Msg-id CAEze2Wg2xbgvC2ZpV4DF9YcKQ20E2E26j_g_aGtq3j1q-sXV+g@mail.gmail.com
обсуждение исходный текст
Ответ на Re: bug: copy progress reporting of backends which run multiple COPYs  (Justin Pryzby <pryzby@telsasoft.com>)
Ответы Re: bug: copy progress reporting of backends which run multiple COPYs  (Michael Paquier <michael@paquier.xyz>)
Re: bug: copy progress reporting of backends which run multiple COPYs  (Justin Pryzby <pryzby@telsasoft.com>)
Список pgsql-hackers
On Sat, 21 Jan 2023 at 02:28, Justin Pryzby <pryzby@telsasoft.com> wrote:
>
> On Sat, Jan 21, 2023 at 01:51:28AM +0100, Matthias van de Meent wrote:
> > On Thu, 19 Jan 2023 at 06:47, Justin Pryzby <pryzby@telsasoft.com> wrote:
> > >
> > > pg_stat_progress_copy was added in v14 (8a4f618e7, 9d2d45700).
> > >
> > > But if a command JOINs file_fdw tables, the progress report gets bungled
> > > up.  This will warn/assert during file_fdw tests.
> >
> > I don't know what to do with that other than disabling COPY progress
> > reporting for file_fdw, i.e. calls to BeginCopyFrom that don't supply
> > a pstate. This is probably the best option, because a table backed by
> > file_fdw would also interfere with COPY TO's progress reporting.
> >
> > Attached a patch that solves this specific issue in a
> > binary-compatible way. I'm not super happy about relying on behavior
> > of callers of BeginCopyFrom (assuming that users that run copy
> > concurrently will not provide a ParseState* to BeginCopyFrom), but it
> > is what it is.
>
> Thanks for looking.  Maybe another option is to avoid progress reporting
> in 2nd and later CopyFrom() if another COPY was already running in that
> backend.

Let me think about it. I think it would work, but I'm not sure that's
a great option - it adds backend state that we would need to add
cleanup handles for. But then again, COPY ... TO could use TRIGGER to
trigger actual COPY FROM statements, which would also break progress
reporting in a vanilla instance without extensions.

I'm not sure what the right thing to do is here.

> Would you do anything different in the master branch, with no
> compatibility constraints ?  I think the progress reporting would still
> be limited to one row per backend, not one per CopyFrom().

I think I would at least introduce another parameter to BeginCopyFrom
for progress reporting (instead of relying on pstate != NULL), like
how we have a bit in reindex_index's params->options that specifies
whether we want progress reporting (which is unset for parallel
workers iirc).

- Matthias



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Justin Pryzby
Дата:
Сообщение: Re: bug: copy progress reporting of backends which run multiple COPYs
Следующее
От: Andres Freund
Дата:
Сообщение: Re: libpqrcv_connect() leaks PGconn