• Tom Lane's avatar
    Update docs & tests to reflect that unassigned OLD/NEW are now NULL. · 59029b6f
    Tom Lane authored
    For a long time, plpgsql has allowed trigger functions to parse
    references to OLD and NEW even if the current trigger event type didn't
    assign a value to one or the other variable; but actually executing such
    a reference would fail.  The v11 changes to use "expanded records" for
    DTYPE_REC variables changed the behavior so that the unassigned variable
    now reads as a null composite value.  While this behavioral change was
    more or less unintentional, it seems that leaving it like this is better
    than adding code and complexity to be bug-compatible with the old way.
    The change doesn't break any code that worked before, and it eliminates
    a gotcha that often required extra code to work around.
    
    Hence, update the docs to say that these variables are "null" not
    "unassigned" when not relevant to the event type.  And add a regression
    test covering the behavior, so that we'll notice if we ever break it
    again.
    
    Per report from Kristjan Tammekivi.
    
    Discussion: https://postgr.es/m/CAABK7uL-uC9ZxKBXzo_68pKt7cECfNRv+c35CXZpjq6jCAzYYA@mail.gmail.com
    59029b6f
release-11.sgml 113 KB