summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-06-06 12:52:18 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-06-06 12:52:18 -0400
commit555f30d64c23558a13bb95c2c10cb8556b5b21ae (patch)
treec4ff1b1cc9d181be987e2210020d7c39c274d35b /lib/sqlalchemy/dialects
parent9a736a4c6e3a21a4d3682a0bd2b547ef0703a027 (diff)
downloadsqlalchemy-555f30d64c23558a13bb95c2c10cb8556b5b21ae.tar.gz
When querying the information schema on SQL Server 2000, removed
a CAST call that was added in 0.8.1 to help with driver issues, which apparently is not compatible on 2000. The CAST remains in place for SQL Server 2005 and greater. [ticket:2747]
Diffstat (limited to 'lib/sqlalchemy/dialects')
-rw-r--r--lib/sqlalchemy/dialects/mssql/information_schema.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/information_schema.py b/lib/sqlalchemy/dialects/mssql/information_schema.py
index a7628f213..c0d5d9168 100644
--- a/lib/sqlalchemy/dialects/mssql/information_schema.py
+++ b/lib/sqlalchemy/dialects/mssql/information_schema.py
@@ -10,10 +10,11 @@ from ... import Table, MetaData, Column
from ...types import String, Unicode, Integer, TypeDecorator
from ... import cast
from ... import util
+from ...sql import expression
+from ...ext.compiler import compiles
ischema = MetaData()
-
class CoerceUnicode(TypeDecorator):
impl = Unicode
@@ -23,7 +24,19 @@ class CoerceUnicode(TypeDecorator):
return value
def bind_expression(self, bindvalue):
- return cast(bindvalue, Unicode)
+ return _cast_on_2005(bindvalue)
+
+class _cast_on_2005(expression.ColumnElement):
+ def __init__(self, bindvalue):
+ self.bindvalue = bindvalue
+
+@compiles(_cast_on_2005)
+def _compile(element, compiler, **kw):
+ from . import base
+ if compiler.dialect.server_version_info < base.MS_2005_VERSION:
+ return compiler.process(element.bindvalue, **kw)
+ else:
+ return compiler.process(cast(element.bindvalue, Unicode), **kw)
schemata = Table("SCHEMATA", ischema,
Column("CATALOG_NAME", CoerceUnicode, key="catalog_name"),