),
)
- whereclause = index.dialect_options["mssql"]["where"]
-
- if whereclause is not None:
- whereclause = coercions.expect(
- roles.DDLExpressionRole, whereclause
- )
-
- where_compiled = self.sql_compiler.process(
- whereclause, include_table=False, literal_binds=True
- )
- text += " WHERE " + where_compiled
-
# handle other included columns
if index.dialect_options["mssql"]["include"]:
inclusions = [
[preparer.quote(c.name) for c in inclusions]
)
+ whereclause = index.dialect_options["mssql"]["where"]
+
+ if whereclause is not None:
+ whereclause = coercions.expect(
+ roles.DDLExpressionRole, whereclause
+ )
+
+ where_compiled = self.sql_compiler.process(
+ whereclause, include_table=False, literal_binds=True
+ )
+ text += " WHERE " + where_compiled
+
return text
def visit_drop_index(self, drop):
from sqlalchemy import String
from sqlalchemy import Table
from sqlalchemy import testing
+from sqlalchemy import text
from sqlalchemy import union
from sqlalchemy import UniqueConstraint
from sqlalchemy import update
schema.CreateIndex(idx), "CREATE INDEX foo ON test (x) INCLUDE (y)"
)
+ def test_index_include_where(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], mssql_where=tbl.c.y > 1
+ )
+ self.assert_compile(
+ schema.CreateIndex(idx),
+ "CREATE INDEX foo ON test (x) INCLUDE (y) WHERE y > 1",
+ )
+
+ idx = Index(
+ "foo", tbl.c.x, mssql_include=[tbl.c.y], mssql_where=text("y > 1")
+ )
+ self.assert_compile(
+ schema.CreateIndex(idx),
+ "CREATE INDEX foo ON test (x) INCLUDE (y) WHERE y > 1",
+ )
+
def test_try_cast(self):
metadata = MetaData()
t1 = Table("t1", metadata, Column("id", Integer, primary_key=True))