CMetadataAccessorFactory::CMetadataAccessorFactory ( IMemoryPool *pmp, CDXLMinidump *pdxlmd, const CHAR *szFileName ) { // set up MD providers CAutoRef<CMDProviderMemory> apmdp(GPOS_NEW(pmp) CMDProviderMemory(pmp, szFileName)); const DrgPsysid *pdrgpsysid = pdxlmd->Pdrgpsysid(); CAutoRef<DrgPmdp> apdrgpmdp(GPOS_NEW(pmp) DrgPmdp(pmp)); // ensure there is at least ONE system id apmdp->AddRef(); apdrgpmdp->Append(apmdp.Pt()); for (ULONG ul = 1; ul < pdrgpsysid->UlLength(); ul++) { apmdp->AddRef(); apdrgpmdp->Append(apmdp.Pt()); } m_apmda = GPOS_NEW(pmp) CMDAccessor(pmp, CMDCache::Pcache(), pdxlmd->Pdrgpsysid(), apdrgpmdp.Pt()); }
CMetadataAccessorFactory::CMetadataAccessorFactory ( IMemoryPool *mp, CDXLMinidump *pdxlmd, const CHAR *file_name ) { // set up MD providers CAutoRef<CMDProviderMemory> apmdp(GPOS_NEW(mp) CMDProviderMemory(mp, file_name)); const CSystemIdArray *pdrgpsysid = pdxlmd->GetSysidPtrArray(); CAutoRef<CMDProviderArray> apdrgpmdp(GPOS_NEW(mp) CMDProviderArray(mp)); // ensure there is at least ONE system id apmdp->AddRef(); apdrgpmdp->Append(apmdp.Value()); for (ULONG ul = 1; ul < pdrgpsysid->Size(); ul++) { apmdp->AddRef(); apdrgpmdp->Append(apmdp.Value()); } m_apmda = GPOS_NEW(mp) CMDAccessor(mp, CMDCache::Pcache(), pdxlmd->GetSysidPtrArray(), apdrgpmdp.Value()); }