Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Memory leak ADO-MSDAORA

Memory leak ADO-MSDAORA

From: Charles Edouard <cemd_at_ping.be>
Date: Thu, 08 Jul 1999 13:47:16 +0200
Message-ID: <37848FC4.C5373631@ping.be>


ADO Memory leak.



The following problem occurs with MSDAORA OleDB provider only, not with other providers like MSDASQL or Microsoft.Jet.OLEDB.4.0; The following program leaks if the CString SELECT is joining 2 tables.

SELECT --> SELECT DISTINCT A.id, B.type

   FROM A,B
   WHERE A.id = '19990610-0007'

if SELECT is a simple query on one table the program does not leak.

SELECT --> SELECT id

   FROM A
   WHERE A.id = '19990610-0007'

//////////////////////////////////////////////////////////////////////
#import <msado15.dll> rename ("EOF", "adoEOF") void CTestAdoLeakDlg::OnGo()
{
 ::CoInitialize(NULL);
_bstr_t Connect("Provider=MSDAORA.1;Data Source=CTMC;User ID=DRO;
Password=RSQ;");

 ADODB::_ConnectionPtr cn;
 HRESULT hr = cn.CreateInstance (__uuidof (ADODB::Connection));  cn->Open (Connect, "", "", -1);
 CString SELECT;
 SELECT.Format("SELECT DISTINCT A.id, B.type FROM A,B WHERE A.id = '19990610-0007'");
 );
_bstr_t Source(SELECT);

 do{
  ADODB::_RecordsetPtr rst = NULL;
  hr = rst.CreateInstance(__uuidof(ADODB::Recordset));

  rst->CursorLocation  = ADODB::adUseServer;
  rst->CursorType  = ADODB::adOpenForwardOnly;
  rst->LockType  = ADODB::adLockReadOnly;
  rst->CacheSize  = 1;

  hr = rst->Open(Source, cn.GetInterfacePtr(), ADODB::adOpenDynamic,ADODB::adLockOptimistic,-1);   do{
   hr = rst->MoveNext();
  }while(!rst->adoEOF);
  hr = rst->Close();
  hr = rst->Release(); // Leaks
 }while(true);

 ::CoUninitialize();
}

Thank you for any solution you can provide Charles. Received on Thu Jul 08 1999 - 06:47:16 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US