summaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorSimon Riggs2011-03-22 23:10:35 +0000
committerSimon Riggs2011-03-22 23:10:35 +0000
commitec497a5ad6a0849efa3fb2fd05988bd8e0c0865d (patch)
tree87e73d54c49de4390b8df16f6ca40b34e46d1204 /src/backend/parser
parent5d1d679dbf780694673529bd864ca1e258ae50d5 (diff)
Make FKs valid at creation when added as column constraints.
Bug report from Alvaro Herrera
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y3
-rw-r--r--src/backend/parser/parse_utilcmd.c1
2 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 7c94aadf3b9..27fdccae5b8 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -2621,6 +2621,7 @@ ColConstraintElem:
n->fk_upd_action = (char) ($5 >> 8);
n->fk_del_action = (char) ($5 & 0xFF);
n->skip_validation = FALSE;
+ n->initially_valid = true;
$$ = (Node *)n;
}
;
@@ -2820,6 +2821,7 @@ ConstraintElem:
n->deferrable = ($11 & 1) != 0;
n->initdeferred = ($11 & 2) != 0;
n->skip_validation = false;
+ n->initially_valid = true;
$$ = (Node *)n;
}
| FOREIGN KEY '(' columnList ')' REFERENCES qualified_name
@@ -2836,6 +2838,7 @@ ConstraintElem:
n->fk_upd_action = (char) ($10 >> 8);
n->fk_del_action = (char) ($10 & 0xFF);
n->skip_validation = true;
+ n->initially_valid = false;
$$ = (Node *)n;
}
;
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 3dffcded4ac..eafc3b30539 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -1696,6 +1696,7 @@ transformFKConstraints(CreateStmtContext *cxt,
Constraint *constraint = (Constraint *) lfirst(fkclist);
constraint->skip_validation = true;
+ constraint->initially_valid = true;
}
}