From: | Sami Imseih <samimseih(at)gmail(dot)com> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | question about pending updates in pgstat_report_inj |
Date: | 2025-09-15 22:11:34 |
Message-ID: | CAA5RZ0v0U0yhPbY+bqChomkPbyUrRQ3rQXnZf_SB-svDiQOpgQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I have been reviewing how custom cumulative statistics should update their
counters, and noticed something unexpected in the injection_points example
[0].
In pgstat_report_inj(), the code updates shared_stats directly:
```
shstatent = (PgStatShared_InjectionPoint *) entry_ref->shared_stats;
statent = &shstatent->stats;
/* Update the injection point statistics */
statent->numcalls++;
```
This works because it increments shared memory directly, but it bypasses the
usual pattern where updates go into ->pending and are later flushed into
shared memory by .flush_pending_cb
I think the more appropriate way to do this is:
```
pgstat_report_inj(const char *name)
{
PgStat_EntryRef *entry_ref;
- PgStatShared_InjectionPoint *shstatent;
PgStat_StatInjEntry *statent;
/* leave if disabled */
@@ -174,8 +173,7 @@ pgstat_report_inj(const char *name)
entry_ref = pgstat_prep_pending_entry(PGSTAT_KIND_INJECTION, InvalidOid,
PGSTAT_INJ_IDX(name), NULL);
- shstatent = (PgStatShared_InjectionPoint *) entry_ref->shared_stats;
- statent = &shstatent->stats;
+ statent = (PgStat_StatInjEntry *) entry_ref->pending;
/* Update the injection point statistics */
statent->numcalls++;
```
which for example pgstat_report_subscription_error does something
similar.
Maybe I am missing something obvious for injection_points?
[0] https://www.postgresql.org/docs/18/xfunc-c.html
--
Sami Imseih
Amazon Web Services (AWS)
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2025-09-15 22:21:22 | Re: question about pending updates in pgstat_report_inj |
Previous Message | Dmitry Koval | 2025-09-15 22:11:19 | Re: Add SPLIT PARTITION/MERGE PARTITIONS commands |