Re: BUG #17973: Reinit of pgstats entry for dropped DB can break autovacuum daemon

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Jacob Speidel <jacob@extrahop.com>, Will Mortensen <will@extrahop.com>, pgsql-bugs@lists.postgresql.org
Date: 2023-09-02T00:08:22Z
Lists: pgsql-bugs
On Fri, Sep 01, 2023 at 08:20:24AM -0700, Nathan Bossart wrote:
> Something along those lines seems fine to me.  FWIW this is what I had in
> my head:
> 
> 	It is important that MyDatabaseId only be set once we are sure that the
> 	target database can no longer be concurrently dropped or renamed.  Some
> 	code depends on this.  For example, without this guarantee,
> 	pgstat_update_dbstats() could create entries for databases that were
> 	just dropped, which will lead to problems down the road.

I'm mostly OK with this formulation as well, but without the second
sentence and adding as extra that pgstat_update_dbstats() could be
specifically called in the shutdown callback of the shared statistics.
--
Michael

Commits

  1. Fix handling of shared statistics with dropped databases

  2. Accept fractional seconds in jsonpath's datetime() method.