]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed bug where CREATE TABLE with a no-column table, but a constraint
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 2 Dec 2015 00:03:03 +0000 (19:03 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 2 Dec 2015 00:03:03 +0000 (19:03 -0500)
such as a CHECK constraint would render an erroneous comma in the
definition; this scenario can occur such as with a Postgresql
INHERITS table that has no columns of its own.
fixes #3598

doc/build/changelog/changelog_10.rst
lib/sqlalchemy/sql/compiler.py
test/sql/test_compiler.py

index 5b66baf97eed44d3a11ac77faadf452d1e2efbaa..ffc2c344682c13917952a0ae6c1c8a7b1a451b9c 100644 (file)
 .. changelog::
     :version: 1.0.10
 
+    .. change::
+        :tags: bug, sql, postgresql
+        :tickets: 3598
+        :versions: 1.1.0b1
+
+        Fixed bug where CREATE TABLE with a no-column table, but a constraint
+        such as a CHECK constraint would render an erroneous comma in the
+        definition; this scenario can occur such as with a Postgresql
+        INHERITS table that has no columns of its own.
+
     .. change::
         :tags: bug, mssql
         :tickets: 3585
index d28ac313b271b940e05079dedf16c3852a3f91bb..6766c99b7dbf4ac44ec66849312dc64ffe394577 100644 (file)
@@ -2163,7 +2163,7 @@ class DDLCompiler(Compiled):
             table, _include_foreign_key_constraints=  # noqa
                 create.include_foreign_key_constraints)
         if const:
-            text += ", \n\t" + const
+            text += separator + "\t" + const
 
         text += "\n)%s\n\n" % self.post_create_table(table)
         return text
index f6f2ec740b589bd9451aa5b77bf94abf55abb443..ffd13309b49a4971ea6761a36b9af593230482fb 100644 (file)
@@ -18,7 +18,7 @@ from sqlalchemy import Integer, String, MetaData, Table, Column, select, \
     literal, and_, null, type_coerce, alias, or_, literal_column,\
     Float, TIMESTAMP, Numeric, Date, Text, union, except_,\
     intersect, union_all, Boolean, distinct, join, outerjoin, asc, desc,\
-    over, subquery, case, true
+    over, subquery, case, true, CheckConstraint
 import decimal
 from sqlalchemy.util import u
 from sqlalchemy import exc, sql, util, types, schema
@@ -2931,6 +2931,30 @@ class DDLTest(fixtures.TestBase, AssertsCompiledSQL):
             "PRIMARY KEY (b, a))"
         )
 
+    def test_table_no_cols(self):
+        m = MetaData()
+        t1 = Table('t1', m)
+        self.assert_compile(
+            schema.CreateTable(t1),
+            "CREATE TABLE t1 ()"
+        )
+
+    def test_table_no_cols_w_constraint(self):
+        m = MetaData()
+        t1 = Table('t1', m, CheckConstraint('a = 1'))
+        self.assert_compile(
+            schema.CreateTable(t1),
+            "CREATE TABLE t1 (CHECK (a = 1))"
+        )
+
+    def test_table_one_col_w_constraint(self):
+        m = MetaData()
+        t1 = Table('t1', m, Column('q', Integer), CheckConstraint('a = 1'))
+        self.assert_compile(
+            schema.CreateTable(t1),
+            "CREATE TABLE t1 (q INTEGER, CHECK (a = 1))"
+        )
+
 
 class InlineDefaultTest(fixtures.TestBase, AssertsCompiledSQL):
     __dialect__ = 'default'