• Andres Freund's avatar
    Don't access catalogs to validate GUCs when not connected to a DB. · fff2a7d7
    Andres Freund authored
    Vignesh found this bug in the check function for
    default_table_access_method's check hook, but that was just copied
    from older GUCs. Investigation by Michael and me then found the bug in
    further places.
    
    When not connected to a database (e.g. in a walsender connection), we
    cannot perform (most) GUC checks that need database access. Even when
    only shared tables are needed, unless they're
    nailed (c.f. RelationCacheInitializePhase2()), they cannot be accessed
    without pg_class etc. being present.
    
    Fix by extending the existing IsTransactionState() checks to also
    check for MyDatabaseOid.
    
    Reported-By: Vignesh C, Michael Paquier, Andres Freund
    Author: Vignesh C, Andres Freund
    Discussion: https://postgr.es/m/CALDaNm1KXK9gbZfY-p_peRFm_XrBh1OwQO1Kk6Gig0c0fVZ2uw%40mail.gmail.com
    Backpatch: 9.4-
    fff2a7d7
tableamapi.c 4.4 KB