pgsql: Fix dependency recording bug for partitioned PKs
От | Alvaro Herrera |
---|---|
Тема | pgsql: Fix dependency recording bug for partitioned PKs |
Дата | |
Msg-id | E1h75QH-00029P-L1@gemulon.postgresql.org обсуждение исходный текст |
Список | 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(-)
В списке pgsql-committers по дате отправления: