]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
pg uses DROP NOT NULL, keep this as the default and move
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 28 Nov 2011 00:52:24 +0000 (19:52 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 28 Nov 2011 00:52:24 +0000 (19:52 -0500)
NULL to SQL Server, until we get more data on other DBs

alembic/ddl/base.py
alembic/ddl/mssql.py
tests/test_mssql.py
tests/test_op.py

index 58e3006f3d5692400559661e50163bbfce437ca5..5fb5d9c1b7c8ae1461d9a16e725f697832e492b4 100644 (file)
@@ -80,7 +80,7 @@ def visit_column_nullable(element, compiler, **kw):
     return "%s %s %s" % (
         alter_table(compiler, element.table_name, element.schema),
         alter_column(compiler, element.column_name),
-        "NULL" if element.nullable else "SET NOT NULL"
+        "DROP NOT NULL" if element.nullable else "SET NOT NULL"
     )
 
 @compiles(ColumnType)
index 42c2952a7aac47ed9d89d64960206a95c81860f9..3f2b45b9c5dec7abda635c8b7c29dae771b1604c 100644 (file)
@@ -1,5 +1,5 @@
 from alembic.ddl.impl import DefaultImpl
-from alembic.ddl.base import alter_table, AddColumn, ColumnName, format_table_name, format_column_name
+from alembic.ddl.base import alter_table, AddColumn, ColumnName, format_table_name, format_column_name, ColumnNullable, alter_column
 from sqlalchemy.ext.compiler import compiles
 
 class MSSQLImpl(DefaultImpl):
@@ -59,6 +59,14 @@ def visit_add_column(element, compiler, **kw):
 def mssql_add_column(compiler, column, **kw):
     return "ADD %s" % compiler.get_column_specification(column, **kw)
 
+@compiles(ColumnNullable, 'mssql')
+def visit_column_nullable(element, compiler, **kw):
+    return "%s %s %s" % (
+        alter_table(compiler, element.table_name, element.schema),
+        alter_column(compiler, element.column_name),
+        "NULL" if element.nullable else "SET NOT NULL"
+    )
+
 
 @compiles(ColumnName, 'mssql')
 def visit_rename_column(element, compiler, **kw):
index c84f849147d13228900fb81d99eaa52a0ea009aa..7c1438234c4d1e54bcc21aa035268043a5d73d94 100644 (file)
@@ -36,6 +36,20 @@ def test_drop_column_w_check():
     context.assert_contains("exec('alter table t1 drop constraint ' + @const_name)")
     context.assert_contains("ALTER TABLE t1 DROP COLUMN c1")
 
+def test_alter_column_nullable():
+    context = _op_fixture('mssql')
+    op.alter_column("t", "c", nullable=True)
+    context.assert_(
+        "ALTER TABLE t ALTER COLUMN c NULL"
+    )
+
+def test_alter_column_not_nullable():
+    context = _op_fixture('mssql')
+    op.alter_column("t", "c", nullable=False)
+    context.assert_(
+        "ALTER TABLE t ALTER COLUMN c SET NOT NULL"
+    )
+
 # TODO: when we add schema support
 #def test_alter_column_rename_mssql_schema():
 #    context = _op_fixture('mssql')
index cf8e6fbd3547b1855c8b886858026763e008a404..54476e696ba289f0509535a83bf77bdb6d7b5283 100644 (file)
@@ -70,8 +70,9 @@ def test_alter_column_nullable():
     context = _op_fixture()
     op.alter_column("t", "c", nullable=True)
     context.assert_(
-        # TODO: not sure if this is supposed to be SET NULL
-        "ALTER TABLE t ALTER COLUMN c NULL"
+        # TODO: not sure if this is PG only or standard 
+        # SQL
+        "ALTER TABLE t ALTER COLUMN c DROP NOT NULL"
     )
 
 def test_alter_column_not_nullable():