1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-02 04:21:28 +03:00

Add new parallel message type to progress reporting.

This commit adds a new type of parallel message 'P' to allow a
parallel worker to poke at a leader to update the progress.

Currently it supports only incremental progress reporting but it's
possible to allow for supporting of other backend progress APIs in the
future.

There are no users of this new message type as of this commit. That
will follow in future commits.

Idea from Andres Freund.

Author: Sami Imseih
Reviewed by: Michael Paquier, Masahiko Sawada
Discussion: https://www.postgresql.org/message-id/flat/5478DFCD-2333-401A-B2F0-0D186AB09228@amazon.com
This commit is contained in:
Masahiko Sawada
2023-07-11 12:33:54 +09:00
parent 26dd0284b9
commit f1889729dd
3 changed files with 51 additions and 0 deletions

View File

@@ -24,6 +24,7 @@
#include "catalog/pg_enum.h"
#include "catalog/storage.h"
#include "commands/async.h"
#include "commands/progress.h"
#include "commands/vacuum.h"
#include "executor/execParallel.h"
#include "libpq/libpq.h"
@@ -1199,6 +1200,23 @@ HandleParallelMessage(ParallelContext *pcxt, int i, StringInfo msg)
break;
}
case 'P': /* Parallel progress reporting */
{
/*
* Only incremental progress reporting is currently supported.
* However, it's possible to add more fields to the message to
* allow for handling of other backend progress APIs.
*/
int index = pq_getmsgint(msg, 4);
int64 incr = pq_getmsgint64(msg);
pq_getmsgend(msg);
pgstat_progress_incr_param(index, incr);
break;
}
case 'X': /* Terminate, indicating clean exit */
{
shm_mq_detach(pcxt->worker[i].error_mqh);