]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- fix mssql index bug, regression post 0.6.4
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 15 Dec 2010 17:16:28 +0000 (12:16 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 15 Dec 2010 17:16:28 +0000 (12:16 -0500)
- dont emit unicode warning if _warn_on_bytestring is false, including
for in-python string conversion

lib/sqlalchemy/dialects/mssql/base.py
lib/sqlalchemy/types.py

index 7dd7400ea60408b6e72ed0cb8e58e2b32c9da936..8f3b9ddb6ed94670f97b0adc2b2d91899ea308d8 100644 (file)
@@ -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:
index 1fa93368306ecf3400a95f7ddee0ac9a1debaed1..e31486eff9a589fe44ed65673c91e3df2eca166f 100644 (file)
@@ -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