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

src

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Tomas Vondra authored
    The pg_upgrade check for pg_catalog.line data type when upgrading from
    9.3 had a couple of issues with domains and composite types. Firstly, it
    triggered false positives for composite types unused in objects with
    storage. This was enough to trigger an unnecessary pg_upgrade failure:
    
      CREATE TYPE line_composite AS (l pg_catalog.line)
    
    On the other hand, this only happened with composite types directly on
    the pg_catalog.line data type, but not with a domain. So this was not
    detected
    
      CREATE DOMAIN line_domain AS pg_catalog.line;
      CREATE TYPE line_composite_2 AS (l line_domain);
    
    unlike the first example. These false positives and inconsistencies are
    unfortunate, but what's worse we've failed to detected objects using the
    pg_catalog.line data type through a domain. So we missed cases like this
    
      CREATE TABLE t (l line_composite_2);
    
    The consequence is clusters broken after a pg_upgrade.
    
    This fixes these false positives and false negatives by using the same
    recursive CTE introduced by eaf900e8 for sql_identifier. 9.3 did not
    support domains on composite types, but we can still have multi-level
    composite types.
    
    Backpatch all the way to 9.4, where the format for pg_catalog.line data
    type changed.
    
    Author: Tomas Vondra
    Backpatch-to: 9.4-
    Discussion: https://postgr.es/m/16045-673e8fa6b5ace196%40postgresql.org
    235a52ca
    History
    Name Last commit Last update
    ..