diff options
| author | Federico Caselli <cfederico87@gmail.com> | 2021-02-18 18:57:02 +0100 |
|---|---|---|
| committer | Federico Caselli <cfederico87@gmail.com> | 2021-02-18 18:57:02 +0100 |
| commit | 30242df2a832382ad1eb7342318efe190c6070e9 (patch) | |
| tree | 66f6ab05dd9e67622c1392f7e021661fc3d39b88 /lib | |
| parent | 227fd31d7d7c9354e51008e5a14e2cb5ee885266 (diff) | |
| download | sqlalchemy-30242df2a832382ad1eb7342318efe190c6070e9.tar.gz | |
Fix a reflection error for MSSQL 2005
The reflection of filtered indexes broke index reflection error
for MSSQL 2005 that does not support that them
Fixes #5930
Change-Id: I5d1f4fa8ba5bca31e91981076e4ee476ddfba49a
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index a0aa67c69..81f66e2f0 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -2894,16 +2894,22 @@ class MSDialect(default.DefaultDialect): @reflection.cache @_db_plus_owner def get_indexes(self, connection, tablename, dbname, owner, schema, **kw): + filter_definition = ( + "ind.filter_definition" + if self.server_version_info >= MS_2008_VERSION + else "NULL as filter_definition" + ) rp = connection.execution_options(future_result=True).execute( sql.text( "select ind.index_id, ind.is_unique, ind.name, " - "ind.filter_definition " + "%s " "from sys.indexes as ind join sys.tables as tab on " "ind.object_id=tab.object_id " "join sys.schemas as sch on sch.schema_id=tab.schema_id " "where tab.name = :tabname " "and sch.name=:schname " "and ind.is_primary_key=0 and ind.type != 0" + % filter_definition ) .bindparams( sql.bindparam("tabname", tablename, ischema.CoerceUnicode()), |
