RE: Subscription statistics are not dropped at DROP SUBSCRIPTION in some cases

Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>

From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Masahiko Sawada' <sawada.mshk@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-05-09T04:51:05Z
Lists: pgsql-hackers
Dear Sawada-san,

Thank you for giving the patch! I confirmed that the problem you raised could be
occurred on the HEAD, and the test you added could reproduce that. When the stats
entry has been removed but pg_stat_get_subscription_stats() is called, the returned
values are set as 0x0.
Additionally, I have checked other pgstat_drop_* functions, and I could not find
any similar problems.

A comment:

```
+       /*
+        * Tell the cumulative stats system that the subscription is getting
+        * dropped.
+        */
+       pgstat_drop_subscription(subid);
```

Isn't it better to write down something you said as comment? Or is it quite trivial?

> There is a chance the
> transaction dropping the subscription fails due to network error etc
> but we don't need to worry about it as reporting the subscription drop
> is transactional.

Best Regards,
Hayato Kuroda
FUJITSU LIMITED

Commits

  1. Stabilize subscription stats test.

  2. pgstat: fix subscription stats entry leak.

  3. Create subscription stats entry at CREATE SUBSCRIPTION time

  4. pgstat: drop subscription stats without slot as well, fix comment