]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- attempted to add a test for #622 / #751, but cant reproduce the failing condition
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 14 Oct 2007 16:56:32 +0000 (16:56 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 14 Oct 2007 16:56:32 +0000 (16:56 +0000)
- fixed major oracle bug introduced by r3561, since colnames come back as unicode now,
need to encode keys in setinputsizes() step

lib/sqlalchemy/databases/mssql.py
lib/sqlalchemy/engine/default.py
test/dialect/oracle.py

index df9a017adcb7fc93b765a7099e3c2b5b276b5570..a37ceb38e14543b4680c4b3087a027991b201524 100644 (file)
@@ -663,7 +663,7 @@ class MSSQLDialect(default.DefaultDialect):
 class MSSQLDialect_pymssql(MSSQLDialect):
     supports_sane_rowcount = False
     max_identifier_length = 30
-
+    
     def import_dbapi(cls):
         import pymssql as module
         # pymmsql doesn't have a Binary method.  we use string
index f4565c93820c03254f0fc3df1f189740844175da..1a15c8b8d1754008cfba1d4105aa1f43422b662c 100644 (file)
@@ -270,7 +270,7 @@ class DefaultExecutionContext(base.ExecutionContext):
                     typeengine = params.get_type(key)
                     dbtype = typeengine.dialect_impl(self.dialect).get_dbapi_type(self.dialect.dbapi)
                     if dbtype is not None:
-                        inputsizes[key] = dbtype
+                        inputsizes[key.encode(self.dialect.encoding)] = dbtype
             self.cursor.setinputsizes(**inputsizes)
 
     def _process_defaults(self):
index 2ad0c4bebbe87476422245d0cd96ef3e039f7473..fa196c5585ddb19fe0372f356c8b82752237b820 100644 (file)
@@ -142,6 +142,22 @@ class TypesTest(SQLCompileTest):
         b = bindparam("foo", u"hello world!")
         assert b.type.dialect_impl(dialect).get_dbapi_type(dbapi) == 'STRING'
         
+    def test_longstring(self):
+        metadata = MetaData(testbase.db)
+        testbase.db.execute("""
+        CREATE TABLE Z_TEST
+        (
+          ID        NUMERIC(22) PRIMARY KEY,
+          ADD_USER  VARCHAR2(20)  NOT NULL
+        )        
+        """)
+        try:
+            t = Table("z_test", metadata, autoload=True)
+            t.insert().execute(id=1.0, add_user='foobar')
+            assert t.select().execute().fetchall() == [(1, 'foobar')]
+        finally:
+            testbase.db.execute("DROP TABLE Z_TEST")
+        
 class SequenceTest(SQLCompileTest):
     def test_basic(self):
         seq = Sequence("my_seq_no_schema")