//--------------------------------------------------------------------------- // Greenplum Database // Copyright (C) 2011 EMC Corp. // // @filename: // CMDProviderRelcache.h // // @doc: // Relcache-based provider of metadata objects. // // @test: // // //--------------------------------------------------------------------------- #ifndef GPMD_CMDProviderRelcache_H #define GPMD_CMDProviderRelcache_H #include "gpos/base.h" #include "gpos/string/CWStringBase.h" #include "naucrates/md/CSystemId.h" #include "naucrates/md/IMDId.h" #include "naucrates/md/IMDProvider.h" // fwd decl namespace gpopt { class CMDAccessor; } namespace gpmd { using namespace gpos; //--------------------------------------------------------------------------- // @class: // CMDProviderRelcache // // @doc: // Relcache-based provider of metadata objects. // //--------------------------------------------------------------------------- class CMDProviderRelcache : public IMDProvider { public: CMDProviderRelcache(const CMDProviderRelcache &) = delete; // ctor/dtor CMDProviderRelcache() = default; ~CMDProviderRelcache() override = default; // returns the DXL string of the requested metadata object CWStringBase *GetMDObjDXLStr(CMemoryPool *mp, CMDAccessor *md_accessor, IMDId *md_id) const override; // return the requested metadata object IMDCacheObject *GetMDObj(CMemoryPool *mp, CMDAccessor *md_accessor, IMDId *mdid, IMDCacheObject::Emdtype mdtype) const override; // return the mdid for the requested type IMDId * MDId(CMemoryPool *mp, CSystemId sysid, IMDType::ETypeInfo type_info) const override { return GetGPDBTypeMdid(mp, sysid, type_info); } }; } // namespace gpmd #endif // !GPMD_CMDProviderRelcache_H // EOF