• Alvaro Herrera's avatar
    Fix dependency recording bug for partitioned PKs · 7e7c57bb
    Alvaro Herrera authored
    When DefineIndex recurses to create constraints on partitions, it needs
    to use the value returned by index_constraint_create to set up partition
    dependencies.  However, in the course of fixing the DEPENDENCY_INTERNAL_AUTO
    mess, commit 1d92a0c9 introduced some code to that function that
    clobbered the return value, causing the recorded OID to be of the wrong
    object.  Close examination of pg_depend after creating the tables leads
    to indescribable objects :-( My sin (in commit bdc3d7fa, while
    preparing for DDL deparsing in event triggers) was to use a variable
    name for the return value that's typically used for throwaway objects in
    dependency-setting calls ("referenced").  Fix by changing the variable
    names to match extended practice (the return value is "myself" rather
    than "referenced".)
    
    The pg_upgrade test notices the problem (in an indirect way: the pg_dump
    outputs are in different order), but only if you create the objects in a
    specific way that wasn't being used in the existing tests.  Add a stanza
    to leave some objects around that shows the bug.
    
    Catversion bump because preexisting databases might have bogus pg_depend
    entries.
    
    Discussion: https://postgr.es/m/20190318204235.GA30360@alvherre.pgsql
    7e7c57bb
indexing.sql 38.7 KB