Thread

  1. Re: Vacuumlo improvements

    Sami Imseih <samimseih@gmail.com> — 2026-05-15T19:36:22Z

    > > Commit 64c604898e added the note about domains to the docs.  Unfortunately,
    > > neither that nor the corresponding thread [0] offer any clues as to why
    > > vacuumlo doesn't resolve domains.  The commit history for vacuumlo has been
    > > pretty quiet for a long time, so maybe it's just been overlooked.
    >
    > It seems to be relatively easy to teach vacuumlo to handle domains over
    > oid.  Note that you need a recursive query because you can have domains
    > over domains.  Please test it out.
    
    I think there is value in expanding the vacuumlo search capability for
    LOs and OIDs.
    We can also detect LOs and OIDs stored in composite types, or OID[] and LO[].
    All these are detectable from the catalog.
    
    The one complexity will be we will need vacuumlo to generate more complex
    expressions for deleting the data.
    
    DELETE FROM t WHERE lo IN (SELECT ("data")."lo_ref" FROM t_lo);
    
    But, this will be more comprehensive and can cover all potential ways
    an OID or LO can be used.
    
    What do you think?
    
    > Please test it out.  I noticed that vacuumlo's tests are
    > pretty sad, so this might be a good opportunity to change that.
    
    More tests will be needed for sure.
    
    But with all this done, I am not sure how much this moves the needle. It may
    somewhat, but it's hard to tell how much.
    I know I have seen users store LO references in text or other types,
    so I think we still need the documentation enhancement to call out
    the "data loss" potential.
    
    I also think it will be good for the LO documentation [1] to nudge the users
    to think about using the LO extension, as is done with the vacuumlo [2]
    documentation.
    
    [1] https://www.postgresql.org/docs/current/lo.html
    [2] https://www.postgresql.org/docs/current/vacuumlo.html
    
    --
    Sami