diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-15 12:16:28 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-15 12:16:28 -0500 |
| commit | 1d09f5e837f2feb6e4101544ad7c6f15c0d0508a (patch) | |
| tree | bdb8954f967383f4bec60f679c61e81b34741c6b /lib/sqlalchemy | |
| parent | 09961886961668dcf452a1139eb8584bf48e2539 (diff) | |
| download | sqlalchemy-1d09f5e837f2feb6e4101544ad7c6f15c0d0508a.tar.gz | |
- fix mssql index bug, regression post 0.6.4
- dont emit unicode warning if _warn_on_bytestring is false, including
for in-python string conversion
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 29 | ||||
| -rw-r--r-- | lib/sqlalchemy/types.py | 3 |
2 files changed, 20 insertions, 12 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 7dd7400ea..8f3b9ddb6 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -1148,8 +1148,10 @@ class MSDialect(default.DefaultDialect): "and sch.name=:schname " "and ind.is_primary_key=0", bindparams=[ - sql.bindparam('tabname', tablename, sqltypes.Unicode), - sql.bindparam('schname', current_schema, sqltypes.Unicode) + sql.bindparam('tabname', tablename, + sqltypes.String(convert_unicode=True)), + sql.bindparam('schname', current_schema, + sqltypes.String(convert_unicode=True)) ] ) ) @@ -1161,16 +1163,21 @@ class MSDialect(default.DefaultDialect): 'column_names':[] } rp = connection.execute( - sql.text("select ind_col.index_id, col.name from sys.columns as col " - "join sys.index_columns as ind_col on " - "ind_col.column_id=col.column_id " - "join sys.tables as tab on tab.object_id=col.object_id " - "join sys.schemas as sch on sch.schema_id=tab.schema_id " - "where tab.name=:tabname " - "and sch.name=:schname", + sql.text( + "select ind_col.index_id, ind_col.object_id, col.name " + "from sys.columns as col " + "join sys.tables as tab on tab.object_id=col.object_id " + "join sys.index_columns as ind_col on " + "(ind_col.column_id=col.column_id and " + "ind_col.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", bindparams=[ - sql.bindparam('tabname', tablename, sqltypes.Unicode), - sql.bindparam('schname', current_schema, sqltypes.Unicode) + sql.bindparam('tabname', tablename, + sqltypes.String(convert_unicode=True)), + sql.bindparam('schname', current_schema, + sqltypes.String(convert_unicode=True)) ]), ) for row in rp: diff --git a/lib/sqlalchemy/types.py b/lib/sqlalchemy/types.py index 1fa933683..e31486eff 100644 --- a/lib/sqlalchemy/types.py +++ b/lib/sqlalchemy/types.py @@ -823,10 +823,11 @@ class String(Concatenable, TypeEngine): return None else: encoder = codecs.getencoder(dialect.encoding) + warn_on_bytestring = self._warn_on_bytestring def process(value): if isinstance(value, unicode): return encoder(value, self.unicode_error)[0] - elif value is not None: + elif warn_on_bytestring and value is not None: util.warn("Unicode type received non-unicode bind " "param value") return value |
