diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2019-03-21 18:34:29 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2019-03-21 18:34:29 -0300 |
commit | 7e7c57bbb2ebed7e8acbd2e62fadca5a5fe5df5f (patch) | |
tree | 8d9df077255d2513d52e24456287d0308fac90eb /src/backend/utils/adt/arrayfuncs.c | |
parent | bfb456c1b9656d5b717b84d833f62cf712b21726 (diff) | |
download | postgresql-7e7c57bbb2ebed7e8acbd2e62fadca5a5fe5df5f.tar.gz postgresql-7e7c57bbb2ebed7e8acbd2e62fadca5a5fe5df5f.zip |
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
Diffstat (limited to 'src/backend/utils/adt/arrayfuncs.c')
0 files changed, 0 insertions, 0 deletions