]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- [bug] Fix bug where create_table() didn't
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 1 Jan 2012 16:21:29 +0000 (11:21 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 1 Jan 2012 16:21:29 +0000 (11:21 -0500)
  handle self-referential foreign key
  correctly [#17]

CHANGES
alembic/op.py
tests/test_op.py

diff --git a/CHANGES b/CHANGES
index 6e5073c7898bdb0c5192852cf7be000b7ff5cd85..0263e247bc18e52f5238ebba0f88313e5865a2bb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
   referenced table in the list of "to remove".
   [#16]
 
+- [bug] Fix bug where create_table() didn't
+  handle self-referential foreign key
+  correctly [#17]
+
 0.1.0
 =====
 - Initial release.  Status of features:
index 4f3423d95b56303a5dbca662a593d392876ecab6..846e68f4fab3600ec6ce74df0c0b373a3c5cd336 100644 (file)
@@ -90,7 +90,7 @@ def _ensure_table_for_fk(metadata, fk):
             rel_t = schema.Table(tname, metadata, schema=sname)
         else:
             rel_t = metadata.tables[table_key]
-        if not rel_t.c.contains_column(cname):
+        if cname not in rel_t.c:
             rel_t.append_column(schema.Column(cname, NULLTYPE))
 
 def rename_table(old_table_name, new_table_name, schema=None):
index bc20d80e6baaf1f9e6288e078a22ed393b6d4718..fe8bf29695c273348cca9fc971985630a2620c30 100644 (file)
@@ -201,6 +201,21 @@ def test_drop_table():
         "DROP TABLE tb_test"
     )
 
+def test_create_table_selfref():
+    context = op_fixture()
+    op.create_table(
+        "some_table", 
+        Column('id', Integer, primary_key=True),
+        Column('st_id', Integer, ForeignKey('some_table.id'))
+    )
+    context.assert_(
+        "CREATE TABLE some_table ("
+            "id INTEGER NOT NULL, "
+            "st_id INTEGER, "
+            "PRIMARY KEY (id), "
+            "FOREIGN KEY(st_id) REFERENCES some_table (id))"
+    )
+
 def test_create_table_fk_and_schema():
     context = op_fixture()
     op.create_table(