[pypy-svn] r69575 - pypy/trunk/pypy/module/oracle

afa at codespeak.net afa at codespeak.net
Tue Nov 24 13:13:42 CET 2009


Author: afa
Date: Tue Nov 24 13:13:41 2009
New Revision: 69575

Modified:
   pypy/trunk/pypy/module/oracle/interp_cursor.py
   pypy/trunk/pypy/module/oracle/interp_error.py
   pypy/trunk/pypy/module/oracle/interp_variable.py
Log:
More translation fixes.


Modified: pypy/trunk/pypy/module/oracle/interp_cursor.py
==============================================================================
--- pypy/trunk/pypy/module/oracle/interp_cursor.py	(original)
+++ pypy/trunk/pypy/module/oracle/interp_cursor.py	Tue Nov 24 13:13:41 2009
@@ -484,7 +484,7 @@
                     self.environment.checkForError(
                         status,
                         "Cursor_ItemDescription(): scale")
-                    scale = attrptr[0]
+                    scale = rffi.cast(lltype.Signed, attrptr[0])
                 finally:
                     lltype.free(attrptr, flavor='raw')
 
@@ -500,7 +500,7 @@
                     self.environment.checkForError(
                         status,
                         "Cursor_ItemDescription(): precision")
-                    precision = attrptr[0]
+                    precision = rffi.cast(lltype.Signed, attrptr[0])
                 finally:
                     lltype.free(attrptr, flavor='raw')
             else:

Modified: pypy/trunk/pypy/module/oracle/interp_error.py
==============================================================================
--- pypy/trunk/pypy/module/oracle/interp_error.py	(original)
+++ pypy/trunk/pypy/module/oracle/interp_error.py	Tue Nov 24 13:13:41 2009
@@ -6,7 +6,8 @@
 from pypy.interpreter.error import OperationError
 from pypy.module.oracle import roci, config
 
-class State: 
+class State:
+    # XXX move to another file
     def __init__(self, space):
         w_module = space.getbuiltinmodule('cx_Oracle')
         def get(name):
@@ -30,6 +31,11 @@
         self.w_DateTimeType = space.getattr(w_datetime, space.wrap("datetime"))
         self.w_DateType = space.getattr(w_datetime, space.wrap("date"))
 
+        from pypy.module.oracle.interp_variable import all_variable_types
+        self.variableTypeByPythonType = {}
+        for varType in all_variable_types:
+            w_type = space.gettypeobject(varType.typedef)
+            self.variableTypeByPythonType[w_type] = varType
 
 def get(space): 
     return space.fromcache(State) 

Modified: pypy/trunk/pypy/module/oracle/interp_variable.py
==============================================================================
--- pypy/trunk/pypy/module/oracle/interp_variable.py	(original)
+++ pypy/trunk/pypy/module/oracle/interp_variable.py	Tue Nov 24 13:13:41 2009
@@ -858,7 +858,7 @@
 class VT_Object(W_Variable):
     canBeInArray = False
 
-variableTypeByTypedef = {}
+all_variable_types = []
 for name, cls in globals().items():
     if not name.startswith('VT_') or not isinstance(cls, type):
         continue
@@ -869,7 +869,7 @@
         cls.typedef = TypeDef(
             cls.__name__, W_Variable.typedef,
             )
-        variableTypeByTypedef[cls.typedef] = cls
+        all_variable_types.append(cls)
     register_variable_class(cls)
 
 def typeByOracleDescriptor(param, environment):
@@ -964,8 +964,8 @@
             space.w_TypeError,
             space.wrap("Variable_TypeByPythonType(): type expected"))
     assert isinstance(w_type, W_TypeObject)
-    if w_type.instancetypedef in variableTypeByTypedef:
-        return variableTypeByTypedef[w_type.instancetypedef]
+    if w_type in get(space).variableTypeByPythonType:
+        return get(space).variableTypeByPythonType[w_type]
     if space.is_w(w_type, space.w_int):
         return VT_Integer
     raise OperationError(



More information about the Pypy-commit mailing list