On Sat, 21 Jan 2023 at 02:28, Justin Pryzby <pry...@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 <pry...@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