On 2015/12/09 18:07, amul sul wrote:
>> On Wednesday, 9 December 2015 12:55 PM, Amit Langote
>> <[email protected]> wrote:
>
>> Thoughts?
>
> Wondering, have you notice failed regression tests?
Here is the updated patch.
> I have tried with new transformCheckConstraints() function & there will be
> small fix in gram.y.
>
>
> Have look into attached patch & please share your thoughts and/or suggestions.
The transformCheckConstraints approach may be better after all.
By the way,
> @@ -1915,6 +1922,32 @@ transformIndexConstraint(Constraint *constraint,
> CreateStmtContext *cxt)
...
> + if (skipValidation)
> + foreach(ckclist, cxt->ckconstraints)
> + {
> + Constraint *constraint = (Constraint *) lfirst(ckclist);
> +
> + constraint->skip_validation = true;
> + constraint->initially_valid = true;
> + }
You forgot to put braces around the if block.
Thanks,
Amit
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 7d7d062..04c4f8f 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -2349,7 +2349,7 @@ AddRelationNewConstraints(Relation rel,
* OK, store it.
*/
constrOid =
- StoreRelCheck(rel, ccname, expr, !cdef->skip_validation, is_local,
+ StoreRelCheck(rel, ccname, expr, cdef->initially_valid, is_local,
is_local ? 0 : 1, cdef->is_no_inherit, is_internal);
numchecks++;
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 344a40c..f0c3e76 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -562,6 +562,11 @@ transformColumnDefinition(CreateStmtContext *cxt, ColumnDef *column)
break;
case CONSTR_CHECK:
+ /*
+ * When being added as part of a column definition, the
+ * following always holds.
+ */
+ constraint->initially_valid = true;
cxt->ckconstraints = lappend(cxt->ckconstraints, constraint);
break;
@@ -687,6 +692,10 @@ transformTableConstraint(CreateStmtContext *cxt, Constraint *constraint)
break;
case CONSTR_CHECK:
+ /* Is this better done in a transformCheckConstraint? */
+ if (!cxt->isalter)
+ constraint->initially_valid = true;
+
cxt->ckconstraints = lappend(cxt->ckconstraints, constraint);
break;
@@ -935,6 +944,7 @@ transformTableLikeClause(CreateStmtContext *cxt, TableLikeClause *table_like_cla
n->conname = pstrdup(ccname);
n->raw_expr = NULL;
n->cooked_expr = nodeToString(ccbin_node);
+ n->initially_valid = true;
cxt->ckconstraints = lappend(cxt->ckconstraints, n);
/* Copy comment on constraint */
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers