From 5b12b1c3770ab8ceb072db993d1ad88fffcd40d9 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 9 May 2008 22:37:41 +0000 Subject: [PATCH] Fix an ancient oversight in change_varattnos_of_a_node: it neglected to update varoattno along with varattno. This resulted in having Vars that were not seen as equal(), causing inheritance of the "same" constraint from different parent relations to fail. An example is create table pp1 (f1 int check (f1>0)); create table cc1 (f2 text, f3 int) inherits (pp1); create table cc2(f4 float) inherits(pp1,cc1); Backpatch as far as 7.4. (The test case still fails in 7.4, for reasons that I don't feel like investigating at the moment.) This is a backpatch commit only. The fix will be applied in HEAD as part of the upcoming pg_constraint patch. --- src/backend/commands/tablecmds.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 97b7d692a31..a9a13a803e5 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.206.2.4 2008/04/24 20:18:07 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.206.2.5 2008/05/09 22:37:41 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1174,7 +1174,7 @@ change_varattnos_walker(Node *node, const AttrNumber *newattno) * currently. */ Assert(newattno[var->varattno - 1] > 0); - var->varattno = newattno[var->varattno - 1]; + var->varattno = var->varoattno = newattno[var->varattno - 1]; } return false; } -- 2.39.5