• Michael Paquier's avatar
    Fix crashes with currtid() and currtid2() · e786be5f
    Michael Paquier authored
    A relation that has no storage initializes rd_tableam to NULL, which
    caused those two functions to crash because of a pointer dereference.
    Note that in 11 and older versions, this has always failed with a
    confusing error "could not open file".
    
    These two functions are used by the Postgres ODBC driver, which requires
    them only when connecting to a backend strictly older than 8.1.  When
    connected to 8.2 or a newer version, the driver uses a RETURNING clause
    instead whose support has been added in 8.2, so it should be possible to
    just remove both functions in the future.  This is left as an issue to
    address later.
    
    While on it, add more regression tests for those functions as we never
    really had coverage for them, and for aggregates of TIDs.
    
    Reported-by: Jaime Casanova, via sqlsmith
    Author: Michael Paquier
    Reviewed-by: Álvaro Herrera
    Discussion: https://postgr.es/m/CAJGNTeO93u-5APMga6WH41eTZ3Uee9f3s8dCpA-GSSqNs1b=Ug@mail.gmail.com
    Backpatch-through: 12
    e786be5f
tid.sql 2.38 KB