[pypy-svn] r69639 - pypy/trunk/pypy/module/oracle
afa at codespeak.net
afa at codespeak.net
Wed Nov 25 17:33:37 CET 2009
Author: afa
Date: Wed Nov 25 17:33:36 2009
New Revision: 69639
Modified:
pypy/trunk/pypy/module/oracle/interp_object.py
pypy/trunk/pypy/module/oracle/roci.py
Log:
Ensure object cleanup
Modified: pypy/trunk/pypy/module/oracle/interp_object.py
==============================================================================
--- pypy/trunk/pypy/module/oracle/interp_object.py (original)
+++ pypy/trunk/pypy/module/oracle/interp_object.py Wed Nov 25 17:33:36 2009
@@ -6,10 +6,18 @@
class W_ObjectType(Wrappable):
def __init__(self, connection, param):
+ self.tdo = None
self.environment = connection.environment
self.isCollection = False
self.initialize(connection, param)
+ def __del__(self):
+ if self.tdo:
+ roci.OCIObjectUnpin(
+ self.environment.handle,
+ self.environment.errorHandle,
+ self.tdo)
+
def initialize(self, connection, param):
nameptr = lltype.malloc(rffi.CArrayPtr(roci.oratext).TO, 1,
flavor='raw')
Modified: pypy/trunk/pypy/module/oracle/roci.py
==============================================================================
--- pypy/trunk/pypy/module/oracle/roci.py (original)
+++ pypy/trunk/pypy/module/oracle/roci.py Wed Nov 25 17:33:36 2009
@@ -69,7 +69,7 @@
OCI_NTV_SYNTAX OCI_COMMIT_ON_SUCCESS
OCI_FETCH_NEXT
OCI_IND_NULL OCI_IND_NOTNULL
- OCI_PIN_ANY OCI_LOCK_NONE
+ OCI_PIN_ANY OCI_LOCK_NONE OCI_OBJECTFREE_FORCE
OCI_OTYPE_PTR OCI_PTYPE_TYPE
OCI_STMT_SELECT OCI_STMT_CREATE OCI_STMT_DROP OCI_STMT_ALTER
OCI_STMT_INSERT OCI_STMT_DELETE OCI_STMT_UPDATE
@@ -461,6 +461,14 @@
# OCI Object Pin, Unpin, and Free Functions
+OCIObjectFree = external(
+ 'OCIObjectFree',
+ [OCIEnv, # env,
+ OCIError, # err
+ dvoidp, # instance
+ ub2], # flags
+ sword)
+
OCIObjectPin = external(
'OCIObjectPin',
[OCIEnv, # env,
@@ -473,6 +481,13 @@
dvoidpp], # object
sword)
+OCIObjectUnpin = external(
+ 'OCIObjectUnpin',
+ [OCIEnv, # env,
+ OCIError, # err
+ dvoidp], # object
+ sword)
+
# OCI Date, Datetime, and Interval Functions
OCIDateTimeCheck = external(
More information about the Pypy-commit
mailing list