• Michael Paquier's avatar
    Eliminate cache lookup errors in SQL functions for object addresses · 2a10fdc4
    Michael Paquier authored
    When using the following functions, users could see various types of
    errors of the type "cache lookup failed for OID XXX" with elog(), that
    can only be used for internal errors:
    * pg_describe_object()
    * pg_identify_object()
    * pg_identify_object_as_address()
    
    The set of APIs managing object addresses for all object types are made
    smarter by gaining a new argument "missing_ok" that allows any caller to
    control if an error is raised or not on an undefined object.  The SQL
    functions listed above are changed to handle the case where an object is
    missing.
    
    Regression tests are added for all object types for the cases where
    these are undefined.  Before this commit, these cases failed with cache
    lookup errors, and now they basically return NULL (minus the name of the
    object type requested).
    
    Author: Michael Paquier
    Reviewed-by: Aleksander Alekseev, Dmitry Dolgov, Daniel Gustafsson,
    Álvaro Herrera, Kyotaro Horiguchi
    Discussion: https://postgr.es/m/CAB7nPqSZxrSmdHK-rny7z8mi=EAFXJ5J-0RbzDw6aus=wB5azQ@mail.gmail.com
    2a10fdc4
relation.c 18.8 KB