- func.sysdate() emits "SYSDATE()", i.e. with the ending
parenthesis, on MySQL. [ticket:1794]
+- sqlite
+ - Fixed concatenation of constraints when "PRIMARY KEY"
+ constraint gets moved to column level due to SQLite
+ AUTOINCREMENT keyword being rendered. [ticket:1812]
+
- oracle
- Added a check for cx_oracle versions lower than version 5,
in which case the incompatible "output type handler" won't
c.table.kwargs.get('sqlite_autoincrement', False) and \
isinstance(c.type, sqltypes.Integer) and \
not c.foreign_keys:
- return ''
+ return None
return super(SQLiteDDLCompiler, self).\
visit_primary_key_constraint(constraint)
preparer = self.preparer
text = "CREATE "
if index.unique:
- text += "UNIQUE "
+ text += "UNIQUE "
text += "INDEX %s ON %s (%s)" \
% (preparer.quote(self._validate_identifier(index.name, True), index.quote),
preparer.format_table(index.table),
return text
def visit_column_check_constraint(self, constraint):
- text = " CHECK (%s)" % constraint.sqltext
+ text = "CHECK (%s)" % constraint.sqltext
text += self.define_constraint_deferrability(constraint)
return text
def visit_unique_constraint(self, constraint):
text = ""
if constraint.name is not None:
- text += "CONSTRAINT %s" % self.preparer.format_constraint(constraint)
- text += " UNIQUE (%s)" % (', '.join(self.preparer.quote(c.name, c.quote) for c in constraint))
+ text += "CONSTRAINT %s " % self.preparer.format_constraint(constraint)
+ text += "UNIQUE (%s)" % (', '.join(self.preparer.quote(c.name, c.quote) for c in constraint))
text += self.define_constraint_deferrability(constraint)
return text
dialect=sqlite.dialect()
)
+ def test_sqlite_autoincrement_constraint(self):
+ table = Table('autoinctable', MetaData(),
+ Column('id', Integer, primary_key=True),
+ Column('x', Integer, default=None),
+ UniqueConstraint('x'),
+ sqlite_autoincrement=True)
+ self.assert_compile(
+ schema.CreateTable(table),
+ "CREATE TABLE autoinctable (id INTEGER NOT NULL "
+ "PRIMARY KEY AUTOINCREMENT, x INTEGER, UNIQUE (x))",
+ dialect=sqlite.dialect()
+ )
+
def test_sqlite_no_autoincrement(self):
table = Table('noautoinctable', MetaData(),
Column('id', Integer, primary_key=True),
self.assert_compile(
schema.CreateTable(t),
- "CREATE TABLE tbl (a INTEGER, b INTEGER CHECK (a < b) DEFERRABLE INITIALLY DEFERRED)"
+ "CREATE TABLE tbl (a INTEGER, b INTEGER CHECK (a < b) DEFERRABLE INITIALLY DEFERRED)"
)
def test_use_alter(self):
data = os.urandom(32)
binary_table.insert().execute(data=data)
- eq_(binary_table.select().where(binary_table.c.data==data).count().scalar(), 1)
+ eq_(binary_table.select().where(binary_table.c.data==data).alias().count().scalar(), 1)
def load_stream(self, name):