On 2015/12/09 18:07, amul sul wrote: >> On Wednesday, 9 December 2015 12:55 PM, Amit Langote >> <langote_amit...@lab.ntt.co.jp> 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 (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers