summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordonkopotamus <derek.harland@finq.co.nz>2014-01-17 11:00:24 +1300
committerdonkopotamus <derek.harland@finq.co.nz>2014-01-17 11:00:24 +1300
commitcf8e5e3cf5b0e1be05a611c8828690acfcd2b9fa (patch)
tree987e7b4f0ff40a686d600549d03b43e34d6aa9ac
parent35935489608c6a896790ed0c51c3ea4b4eb6186f (diff)
downloadsqlalchemy-cf8e5e3cf5b0e1be05a611c8828690acfcd2b9fa.tar.gz
Bug Fix: Stop generating bad sql if an empty UniqueConstraint() is given
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py2
-rw-r--r--lib/sqlalchemy/sql/compiler.py2
-rw-r--r--test/sql/test_constraints.py22
3 files changed, 26 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index c024b6230..6c942b270 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -1069,6 +1069,8 @@ class MSDDLCompiler(compiler.DDLCompiler):
return text
def visit_unique_constraint(self, constraint):
+ if len(constraint) == 0:
+ return ''
text = ""
if constraint.name is not None:
text += "CONSTRAINT %s " % \
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py
index ade3c623a..5c5bfad55 100644
--- a/lib/sqlalchemy/sql/compiler.py
+++ b/lib/sqlalchemy/sql/compiler.py
@@ -2511,6 +2511,8 @@ class DDLCompiler(Compiled):
return preparer.format_table(table)
def visit_unique_constraint(self, constraint):
+ if len(constraint) == 0:
+ return ''
text = ""
if constraint.name is not None:
text += "CONSTRAINT %s " % \
diff --git a/test/sql/test_constraints.py b/test/sql/test_constraints.py
index 393bcd448..cb4b73ec8 100644
--- a/test/sql/test_constraints.py
+++ b/test/sql/test_constraints.py
@@ -544,6 +544,28 @@ class ConstraintCompilationTest(fixtures.TestBase, AssertsCompiledSQL):
"FOREIGN KEY(foo_bar) REFERENCES foo (bar))"
)
+ def test_empty_pkc(self):
+ # test that an empty primary key is ignored
+ metadata = MetaData()
+ tbl = Table('test', metadata,
+ Column('x', Integer, autoincrement=False),
+ Column('y', Integer, autoincrement=False),
+ PrimaryKeyConstraint())
+ self.assert_compile(schema.CreateTable(tbl),
+ "CREATE TABLE test (x INTEGER, y INTEGER)"
+ )
+
+ def test_empty_uc(self):
+ # test that an empty constraint is ignored
+ metadata = MetaData()
+ tbl = Table('test', metadata,
+ Column('x', Integer, autoincrement=False),
+ Column('y', Integer, autoincrement=False),
+ UniqueConstraint())
+ self.assert_compile(schema.CreateTable(tbl),
+ "CREATE TABLE test (x INTEGER, y INTEGER)"
+ )
+
def test_deferrable_column_check(self):
t = Table('tbl', MetaData(),
Column('a', Integer),