• J
    Do not automatically create an array type for child partitions · a8f5a045
    Jimmy Yih 提交于
    As part of the Postgres 8.3 merge, all heap tables now automatically
    create an array type. The array type will usually be created with
    typname '_<heap_name>' since the automatically created composite type
    already takes the typname '<heap_name>' first. If typname
    '_<heap_name>' is taken, the logic will continue to prepend
    underscores until no collision (truncating the end if typname gets
    past NAMEDATALEN of 64). This might be an oversight in upstream
    Postgres since certain scenarios involving creating a large number of
    heap tables with similar names could result in a lot of typname
    collisions until no heap tables with similar names can be
    created. This is very noticable in Greenplum heap partition tables
    because Greenplum has logic to automatically name child partitions
    with similar names instead of having the user name each child
    partition.
    
    To prevent typname collision failures when creating a heap partition
    table with a large number of child partitions, we will now stop
    automatically creating the array type for child partitions.
    
    References:
    https://www.postgresql.org/message-id/flat/20070302234016.GF3665%40fetter.org
    https://github.com/postgres/postgres/commit/bc8036fc666a8f846b1d4b2f935af7edd90eb5aa
    a8f5a045
partition_optimizer.out 521.7 KB