"initially",
"deferrable",
"use_alter",
+ "match",
]
if not autogen_context._has_batch:
kwargs.insert(0, "source_schema")
opts.append(("deferrable", repr(constraint.deferrable)))
if constraint.use_alter:
opts.append(("use_alter", repr(constraint.use_alter)))
+ if constraint.match:
+ opts.append(("match", repr(constraint.match)))
@_constraint_renderers.dispatch_for(sa_schema.ForeignKeyConstraint)
"initially='XYZ')",
)
+ fk = ForeignKeyConstraint([t1.c.c], [t2.c.c_rem], match="FULL")
+ op_obj = ops.AddConstraintOp.from_constraint(fk)
+ eq_ignore_whitespace(
+ re.sub(
+ r"u'",
+ "'",
+ autogenerate.render_op_text(self.autogen_context, op_obj),
+ ),
+ "op.create_foreign_key(None, 't', 't2', ['c'], ['c_rem'], "
+ "match='FULL')",
+ )
+
fk = ForeignKeyConstraint(
[t1.c.c],
[t2.c.c_rem],
initially="XYZ",
ondelete="CASCADE",
deferrable=True,
+ match="FULL",
)
op_obj = ops.AddConstraintOp.from_constraint(fk)
eq_ignore_whitespace(
autogenerate.render_op_text(self.autogen_context, op_obj),
),
"op.create_foreign_key(None, 't', 't2', ['c'], ['c_rem'], "
- "ondelete='CASCADE', initially='XYZ', deferrable=True)",
+ "ondelete='CASCADE', initially='XYZ', deferrable=True, "
+ "match='FULL')",
)
def test_add_fk_constraint_inline_colkeys(self):
"sa.ForeignKeyConstraint(['c'], ['t2.c_rem'], initially='XYZ')",
)
+ fk = ForeignKeyConstraint([t1.c.c], [t2.c.c_rem], match="FULL")
+ eq_ignore_whitespace(
+ re.sub(
+ r"u'",
+ "'",
+ autogenerate.render._render_constraint(
+ fk, self.autogen_context, m
+ ),
+ ),
+ "sa.ForeignKeyConstraint(['c'], ['t2.c_rem'], match='FULL')",
+ )
+
fk = ForeignKeyConstraint(
[t1.c.c],
[t2.c.c_rem],
initially="XYZ",
ondelete="CASCADE",
deferrable=True,
+ match="FULL",
)
eq_ignore_whitespace(
re.sub(
),
),
"sa.ForeignKeyConstraint(['c'], ['t2.c_rem'], "
- "ondelete='CASCADE', initially='XYZ', deferrable=True)",
+ "ondelete='CASCADE', initially='XYZ', deferrable=True, "
+ "match='FULL')",
)
def test_render_fk_constraint_resolve_key(self):
"WHERE (x > 5)"
)
+ def test_drop_exclude_or_other_constraint(self):
+ context = op_fixture("postgresql")
+ op.drop_constraint("t_excl_x", "TTable", type_=None)
+ context.assert_('ALTER TABLE "TTable" DROP CONSTRAINT t_excl_x')
+
def test_create_exclude_constraint_quoted_literal(self):
context = op_fixture("postgresql")
op.create_exclude_constraint(