preparer.format_table(index.table),
', '.join([preparer.quote(c.name, c.quote) + (" " + o if o else "")
for c, o in zip(index.columns, ordering)]))
+
+ # handle other included columns
+ if index.kwargs.get("mssql_include"):
+ inclusions = [index.table.c[col] if isinstance(col, basestring) else col
+ for col in index.kwargs["mssql_include"]]
+
+ text += " INCLUDE (%s)" \
+ % ', '.join([preparer.quote(c.name, c.quote)
+ for c in inclusions])
+
return text
def visit_drop_index(self, drop):
"CREATE INDEX foo ON test (x DESC, y)"
)
+ def test_index_extra_include_1(self):
+ metadata = MetaData()
+ tbl = Table('test', metadata,
+ Column('x', Integer), Column('y', Integer), Column('z', Integer))
+ idx = Index("foo", tbl.c.x, mssql_include=['y'])
+ self.assert_compile(schema.CreateIndex(idx),
+ "CREATE INDEX foo ON test (x) INCLUDE (y)"
+ )
+
+ def test_index_extra_include_2(self):
+ metadata = MetaData()
+ tbl = Table('test', metadata,
+ Column('x', Integer), Column('y', Integer), Column('z', Integer))
+ idx = Index("foo", tbl.c.x, mssql_include=[tbl.c.y])
+ self.assert_compile(schema.CreateIndex(idx),
+ "CREATE INDEX foo ON test (x) INCLUDE (y)"
+ )
+
class SchemaAliasingTest(fixtures.TestBase, AssertsCompiledSQL):
"""SQL server cannot reference schema-qualified tables in a SELECT statement, they
must be aliased.