Explain dropdb can't use syscache because of TOAST
authorTomas Vondra <[email protected]>
Mon, 19 Aug 2024 11:31:51 +0000 (13:31 +0200)
committerTomas Vondra <[email protected]>
Mon, 19 Aug 2024 11:31:51 +0000 (13:31 +0200)
Add a comment explaining dropdb() can't rely on syscache. The issue with
flattened rows was fixed by commit 0f92b230f88b, but better to have
a clear explanation why the systable scan is necessary. The other places
doing in-place updates on pg_database have the same comment.

Suggestion and patch by Yugo Nagata. Backpatch to 12, same as the fix.

Author: Yugo Nagata
Backpatch-through: 12
Discussion: https://postgr.es/m/CAJTYsWWNkCt+-UnMhg=BiCD3Mh8c2JdHLofPxsW3m2dkDFw8RA@mail.gmail.com

src/backend/commands/dbcommands.c

index 7a7e2c6e3efe083d6bbc65db9bf0e20f2f35ad69..d00ae40e1927d4defb7f2874c34523630553beca 100644 (file)
@@ -1790,7 +1790,9 @@ dropdb(const char *dbname, bool missing_ok, bool force)
    pgstat_drop_database(db_id);
 
    /*
-    * Update the database's pg_database tuple
+    * Get the pg_database tuple to scribble on.  Note that this does not
+    * directly rely on the syscache to avoid issues with flattened toast
+    * values for the in-place update.
     */
    ScanKeyInit(&scankey,
                Anum_pg_database_datname,