aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2017-08-03 13:09:15 -0400
committerRobert Haas <rhaas@postgresql.org>2017-08-03 13:25:32 -0400
commit1f220c39072bcbee25c247bf7923c009032c3b08 (patch)
tree7fdb82f55c078e127d3470bc9bdfaaa9794ffa52
parent060393f2a13651bf53c7626a3587baaf82942023 (diff)
downloadpostgresql-1f220c39072bcbee25c247bf7923c009032c3b08.tar.gz
postgresql-1f220c39072bcbee25c247bf7923c009032c3b08.zip
Allow a foreign table CHECK constraint to be initially NOT VALID.
For a table, the constraint can be considered validated immediately, because the table must be empty. But for a foreign table this is not necessarily the case. Fixes a bug in commit f27a6b15e6566fba7748d0d9a3fc5bcfd52c4a1b. Amit Langote, with some changes by me. Discussion: http://postgr.es/m/d2b7419f-4a71-cf86-cc99-bfd0f359a1ea@lab.ntt.co.jp
-rw-r--r--src/backend/parser/parse_utilcmd.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index e9e8ef3b44f..e4dc508682f 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -156,6 +156,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString)
Oid existing_relid;
ParseCallbackState pcbstate;
bool like_found = false;
+ bool is_foreign_table = IsA(stmt, CreateForeignTableStmt);
/*
* We must not scribble on the passed-in CreateStmt, so copy it. (This is
@@ -312,7 +313,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString)
/*
* Postprocess check constraints.
*/
- transformCheckConstraints(&cxt, true);
+ transformCheckConstraints(&cxt, !is_foreign_table ? true : false);
/*
* Output results.
@@ -1935,9 +1936,9 @@ transformCheckConstraints(CreateStmtContext *cxt, bool skipValidation)
return;
/*
- * If creating a new table, we can safely skip validation of check
- * constraints, and nonetheless mark them valid. (This will override any
- * user-supplied NOT VALID flag.)
+ * If creating a new table (but not a foreign table), we can safely skip
+ * validation of check constraints, and nonetheless mark them valid.
+ * (This will override any user-supplied NOT VALID flag.)
*/
if (skipValidation)
{