How to free an Oracle Object-Type passed to an external procedure
- by chila
I'm using OTT to pass and load an Object Type from a C++ external procedure. The problem I have is that I don't know how to somehow mark the object for deallocation once extproc has done marshalling it. The object remains in extproc's memory forever making it grow in memory consumtion. Here's part of the code:
void decodeFromBuffer(OCIExtProcContext *ctx, GPRS_GPRSCHARGINGRECORD *record, GPRS_GPRSCHARGINGRECORD_ind *recordInd,
const unsigned char *buffer, int buffLen, OCIInd *bufferInd)
{
.
.
.
assert(OCIExtProcGetEnv(ctx, &envh, &svch, &errh) == OCI_SUCCESS);
recordInd->_atomic = OCI_IND_NOTNULL;
// somehow I should mark the object for deallocation after extproc has done marshalling it
// using OCINumberFromInt and OCIStringAssignText to load the object (this memory is never deallocated)
.
.
.
}
How could I mark the object (and subobjects) for deallocation?