pgsql: Fix dependency recording bug for partitioned PKs

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix dependency recording bug for partitioned PKs
Date: 2019-03-21 21:40:25
Message-ID: E1h75QH-00029P-L1@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix dependency recording bug for partitioned PKs

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 1d92a0c9f7dd 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 bdc3d7fa2376, 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

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/7e7c57bbb2ebed7e8acbd2e62fadca5a5fe5df5f

Modified Files
--------------
src/backend/catalog/index.c | 19 +++++++------------
src/test/regress/expected/indexing.out | 18 ++++++++++++++++++
src/test/regress/sql/indexing.sql | 19 +++++++++++++++++++
3 files changed, 44 insertions(+), 12 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Alvaro Herrera 2019-03-21 21:44:23 pgsql: Catversion bump announced in previous commit but forgotten
Previous Message Tom Lane 2019-03-21 15:52:23 pgsql: Improve error reporting for DROP FUNCTION/PROCEDURE/AGGREGATE/RO