]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
tweak to take advantage of returning support in executemany
authorPhilip Jenvey <pjenvey@underboss.org>
Sat, 13 Mar 2010 03:01:59 +0000 (19:01 -0800)
committerPhilip Jenvey <pjenvey@underboss.org>
Sat, 13 Mar 2010 03:01:59 +0000 (19:01 -0800)
lib/sqlalchemy/dialects/oracle/zxjdbc.py
test/sql/test_returning.py

index fba16288a57247e5278a2e90afac18988c71c3e5..5b4760ff8a1ec72edde806b988aa8640e651aa8f 100644 (file)
@@ -53,17 +53,17 @@ class _ZxJDBCNumeric(sqltypes.Numeric):
 class Oracle_zxjdbcCompiler(OracleCompiler):
 
     def returning_clause(self, stmt, returning_cols):
-        columnlist = list(expression._select_iterables(returning_cols))
+        self.returning_cols = list(expression._select_iterables(returning_cols))
 
         # within_columns_clause=False so that labels (foo AS bar) don't render
         columns = [self.process(c, within_columns_clause=False, result_map=self.result_map)
-                   for c in columnlist]
+                   for c in self.returning_cols]
 
         if not hasattr(self, 'returning_parameters'):
             self.returning_parameters = []
 
         binds = []
-        for i, col in enumerate(columnlist):
+        for i, col in enumerate(self.returning_cols):
             dbtype = col.type.dialect_impl(self.dialect).get_dbapi_type(self.dialect.dbapi)
             self.returning_parameters.append((i + 1, dbtype))
 
@@ -123,10 +123,8 @@ class ReturningResultProxy(base.FullyBufferedResultProxy):
         super(ReturningResultProxy, self).__init__(context)
 
     def _cursor_description(self):
-        returning = self.context.compiled.returning
-
         ret = []
-        for c in returning:
+        for c in self.context.compiled.returning_cols:
             if hasattr(c, 'name'):
                 ret.append((c.name, c.type))
             else:
index ba3e2ebb98d7f7466fa400d046afb96173e2c469..332f4eef5d6c217fb788e32da8ab000e6b4f6065 100644 (file)
@@ -96,7 +96,7 @@ class ReturningTest(TestBase, AssertsExecutionResults):
         eq_(result.fetchall(), [(1,)])
 
         @testing.fails_on('postgresql', '')
-        @testing.fails_on('oracle', '')
+        @testing.fails_on('oracle+cx_oracle', '')
         @testing.crashes('mssql+mxodbc', 'Raises an error')
         def test_executemany():
             # return value is documented as failing with psycopg2/executemany
@@ -106,7 +106,7 @@ class ReturningTest(TestBase, AssertsExecutionResults):
             if testing.against('mssql+zxjdbc'):
                 # jtds apparently returns only the first row
                 eq_(result2.fetchall(), [(2, 2, False, None)])
-            elif testing.against('firebird', 'mssql'):
+            elif testing.against('firebird', 'mssql', 'oracle'):
                 # Multiple inserts only return the last row
                 eq_(result2.fetchall(), [(3, 3, True, None)])
             else: