Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

tablespace.c

Blame
    • Andres Freund's avatar
      b8607e15
      Don't access catalogs to validate GUCs when not connected to a DB. · b8607e15
      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-
      b8607e15
      History
      Don't access catalogs to validate GUCs when not connected to a DB.
      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-