• Heikki Linnakangas's avatar
    Fix snapshot reference leak if lo_export fails. · 4ebd740c
    Heikki Linnakangas authored
    If lo_export() fails to open the target file or to write to it, it leaks
    the created LargeObjectDesc and its snapshot in the top-transaction
    context and resource owner. That's pretty harmless, it's a small leak
    after all, but it gives the user a "Snapshot reference leak" warning.
    
    Fix by using a short-lived memory context and no resource owner for
    transient LargeObjectDescs that are opened and closed within one function
    call. The leak is easiest to reproduce with lo_export() on a directory
    that doesn't exist, but in principle the other lo_* functions could also
    fail.
    
    Backpatch to all supported versions.
    
    Reported-by: Andrew B
    Reviewed-by: Alvaro Herrera
    Discussion: https://www.postgresql.org/message-id/32bf767a-2d65-71c4-f170-122f416bab7e@iki.fi
    4ebd740c
largeobject.source 8.12 KB