]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed bug which was preventing out params of certain types
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 3 Jan 2009 19:09:25 +0000 (19:09 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 3 Jan 2009 19:09:25 +0000 (19:09 +0000)
from being received; thanks a ton to huddlej at wwu.edu !
[ticket:1265]

CHANGES
lib/sqlalchemy/databases/oracle.py
test/dialect/oracle.py

diff --git a/CHANGES b/CHANGES
index 2440cf575b111f63b75d78fd7383c87012d0438e..9e60e512e00d3bf6fea9660718105d817d0a348c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -46,6 +46,11 @@ CHANGES
     - Fixed bug in exception raise when FK columns not present
       during reflection. [ticket:1241]
 
+- oracle
+    - Fixed bug which was preventing out params of certain types
+      from being received; thanks a ton to huddlej at wwu.edu !
+      [ticket:1265]
+
 0.4.8
 =====
 - orm
index 5baef60d5da57422cc8bdebbbfa8add29f88450e..f89dc9a946586bdb6efe8299426684efdbe7828a 100644 (file)
@@ -226,7 +226,12 @@ class OracleExecutionContext(default.DefaultExecutionContext):
                  for bind, name in self.compiled.bind_names.iteritems():
                      if name in self.out_parameters:
                          type = bind.type
-                         self.out_parameters[name] = type.dialect_impl(self.dialect).result_processor(self.dialect)(self.out_parameters[name].getvalue())
+                         
+                         result_processor = type.dialect_impl(self.dialect).result_processor(self.dialect)
+                         if result_processor is not None:
+                             self.out_parameters[name] = result_processor(self.out_parameters[name].getvalue())
+                         else:
+                             self.out_parameters[name] = self.out_parameters[name].getvalue()
             else:
                  for k in self.out_parameters:
                      self.out_parameters[k] = self.out_parameters[k].getvalue()
index a6eb9e4967ff4d948b3b5c71c866498c345c6496..3d6486b6a0b4a38a3c1a5f85a7dec0d901669ff8 100644 (file)
@@ -12,19 +12,19 @@ class OutParamTest(TestBase, AssertsExecutionResults):
 
     def setUpAll(self):
         testing.db.execute("""
-create or replace procedure foo(x_in IN number, x_out OUT number, y_out OUT number) IS
+create or replace procedure foo(x_in IN number, x_out OUT number, y_out OUT number, z_out OUT varchar) IS
   retval number;
     begin
     retval := 6;
     x_out := 10;
     y_out := x_in * 15;
+    z_out := NULL;
     end;
         """)
 
     def test_out_params(self):
-        result = testing.db.execute(text("begin foo(:x, :y, :z); end;", bindparams=[bindparam('x', Numeric), outparam('y', Numeric), outparam('z', Numeric)]), x=5)
-        assert result.out_parameters == {'y':10, 'z':75}, result.out_parameters
-        print result.out_parameters
+        result = testing.db.execute(text("begin foo(:x_in, :x_out, :y_out, :z_out); end;", bindparams=[bindparam('x_in', Numeric), outparam('x_out', Numeric), outparam('y_out', Numeric), outparam('z_out', oracle.OracleString)]), x_in=5)
+        assert result.out_parameters == {'x_out':10, 'y_out':75, 'z_out':None}, result.out_parameters
 
     def tearDownAll(self):
          testing.db.execute("DROP PROCEDURE foo")