• Andres Freund's avatar
    Fix heap_getattr() handling of fast defaults. · 171e0418
    Andres Freund authored
    Previously heap_getattr() returned NULL for attributes with a fast
    default value (c.f. 16828d5c), as it had no handling whatsoever
    for that case.
    
    A previous fix, 7636e5c6, attempted to fix issues caused by this
    oversight, but just expanding OLD tuples for triggers doesn't actually
    solve the underlying issue.
    
    One known consequence of this bug is that the check for HOT updates
    can return the wrong result, when a previously fast-default'ed column
    is set to NULL. Which in turn means that an index over a column with
    fast default'ed columns might be corrupt if the underlying column(s)
    allow NULLs.
    
    Fix by handling fast default columns in heap_getattr(), remove now
    superfluous expansion in GetTupleForTrigger().
    
    Author: Andres Freund
    Discussion: https://postgr.es/m/20190201162404.onngi77f26baem4g@alap3.anarazel.de
    Backpatch: 11, where fast defaults were introduced
    171e0418
fast_default.out 30.4 KB