Note case where nbtree VACUUM finishes splits.
authorPeter Geoghegan <[email protected]>
Tue, 5 Mar 2019 01:57:36 +0000 (17:57 -0800)
committerPeter Geoghegan <[email protected]>
Tue, 5 Mar 2019 01:57:36 +0000 (17:57 -0800)
The nbtree README claims that VACUUM can never finish interrupted page
splits by design.  That isn't entirely accurate, though.  Note an
exception to the general rule.

Discussion: https://postgr.es/m/CAH2-Wz=_Xvv8byzK_LvY4ci76OgsHCQzoKF7We8yG9waO7j6rA@mail.gmail.com

src/backend/access/nbtree/README

index 3680e69b89a8458d58f6c3361eb612788fa33786..b0b4ab8b76600559c9058a89b5d45e51d6b56913 100644 (file)
@@ -476,7 +476,10 @@ inserting a downlink might require splitting a page, it might fail if you
 run out of disk space.  That would be bad during VACUUM - the reason for
 running VACUUM in the first place might be that you run out of disk space,
 and now VACUUM won't finish because you're out of disk space.  In contrast,
-an insertion can require enlarging the physical file anyway.
+an insertion can require enlarging the physical file anyway.  There is one
+minor exception: VACUUM finishes interrupted splits of internal pages when
+deleting their children.  This allows the code for re-finding parent items
+to be used by both page splits and page deletion.
 
 To identify missing downlinks, when a page is split, the left page is
 flagged to indicate that the split is not yet complete (INCOMPLETE_SPLIT).