On Wed, Mar 31, 2021 at 1:31 PM Mark Dilger
<mark.dilger@enterprisedb.com> wrote:
> Actually, that makes a lot of sense without even looking at the old code. I was implicitly assuming that the toast
tablewas undergoing a VF also, and that the toast pointers in the main table tuples would be updated to point to the
newlocation, so we'd be unable to follow the pointers to the old location without danger of the old location entries
beingvacuumed away. But if the main table tuples get moved while keeping their toast pointers unaltered, then you
don'thave to worry about that, although you do have to worry that a VF of the main table doesn't help so much with
toasttable bloat.
>
> We're only discussing this in order to craft the right comment for a bit of code with respect to a hypothetical
situationin which VF gets resurrected, so I'm not sure this should be top priority, but I'm curious enough now to go
readthe old code....
Right, well, we wouldn't be PostgreSQL hackers if we didn't spend lots
of time worrying about obscure details. Whether that's good software
engineering or mere pedantry is sometimes debatable.
I took a look at commit 0a469c87692d15a22eaa69d4b3a43dd8e278dd64,
which removed old-style VACUUM FULL, and AFAICS, it doesn't contain
any references to tuple deforming, varlena, HeapTupleHasExternal, or
anything else that would make me think it has the foggiest idea
whether the tuples it's moving around contain TOAST pointers, so I
think I had the right idea.
--
Robert Haas
EDB: http://www.enterprisedb.com