Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitec497a5

Browse files
Make FKs valid at creation when added as column constraints.
Bug report from Alvaro Herrera
1 parent5d1d679 commitec497a5

File tree

7 files changed

+9
-1
lines changed

7 files changed

+9
-1
lines changed

‎src/backend/commands/tablecmds.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5595,7 +5595,7 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel,
55955595
CONSTRAINT_FOREIGN,
55965596
fkconstraint->deferrable,
55975597
fkconstraint->initdeferred,
5598-
!fkconstraint->skip_validation,
5598+
fkconstraint->initially_valid,
55995599
RelationGetRelid(rel),
56005600
fkattnum,
56015601
numfks,

‎src/backend/nodes/copyfuncs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2341,6 +2341,7 @@ _copyConstraint(Constraint *from)
23412341
COPY_SCALAR_FIELD(fk_upd_action);
23422342
COPY_SCALAR_FIELD(fk_del_action);
23432343
COPY_SCALAR_FIELD(skip_validation);
2344+
COPY_SCALAR_FIELD(initially_valid);
23442345

23452346
returnnewnode;
23462347
}

‎src/backend/nodes/equalfuncs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2270,6 +2270,7 @@ _equalConstraint(Constraint *a, Constraint *b)
22702270
COMPARE_SCALAR_FIELD(fk_upd_action);
22712271
COMPARE_SCALAR_FIELD(fk_del_action);
22722272
COMPARE_SCALAR_FIELD(skip_validation);
2273+
COMPARE_SCALAR_FIELD(initially_valid);
22732274

22742275
return true;
22752276
}

‎src/backend/nodes/outfuncs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2625,6 +2625,7 @@ _outConstraint(StringInfo str, Constraint *node)
26252625
WRITE_CHAR_FIELD(fk_upd_action);
26262626
WRITE_CHAR_FIELD(fk_del_action);
26272627
WRITE_BOOL_FIELD(skip_validation);
2628+
WRITE_BOOL_FIELD(initially_valid);
26282629
break;
26292630

26302631
caseCONSTR_ATTR_DEFERRABLE:

‎src/backend/parser/gram.y

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2621,6 +2621,7 @@ ColConstraintElem:
26212621
n->fk_upd_action= (char) ($5 >>8);
26222622
n->fk_del_action= (char) ($5 &0xFF);
26232623
n->skip_validation =FALSE;
2624+
n->initially_valid =true;
26242625
$$ = (Node *)n;
26252626
}
26262627
;
@@ -2820,6 +2821,7 @@ ConstraintElem:
28202821
n->deferrable= ($11 &1) !=0;
28212822
n->initdeferred= ($11 &2) !=0;
28222823
n->skip_validation =false;
2824+
n->initially_valid =true;
28232825
$$ = (Node *)n;
28242826
}
28252827
|FOREIGNKEY'('columnList')'REFERENCESqualified_name
@@ -2836,6 +2838,7 @@ ConstraintElem:
28362838
n->fk_upd_action= (char) ($10 >>8);
28372839
n->fk_del_action= (char) ($10 &0xFF);
28382840
n->skip_validation =true;
2841+
n->initially_valid =false;
28392842
$$ = (Node *)n;
28402843
}
28412844
;

‎src/backend/parser/parse_utilcmd.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1696,6 +1696,7 @@ transformFKConstraints(CreateStmtContext *cxt,
16961696
Constraint*constraint= (Constraint*)lfirst(fkclist);
16971697

16981698
constraint->skip_validation= true;
1699+
constraint->initially_valid= true;
16991700
}
17001701
}
17011702

‎src/include/nodes/parsenodes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1536,6 +1536,7 @@ typedef struct Constraint
15361536
charfk_upd_action;/* ON UPDATE action */
15371537
charfk_del_action;/* ON DELETE action */
15381538
boolskip_validation;/* skip validation of existing rows? */
1539+
boolinitially_valid;/* start the new constraint as valid */
15391540
}Constraint;
15401541

15411542
/* ----------------------

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp