greenplumn CStatisticsConfig 源码

2022-08-18 浏览 (322)

greenplumn CStatisticsConfig 代码

文件路径:/src/backend/gporca/libgpopt/src/engine/CStatisticsConfig.cpp

/---------------------------------------------------------------------------
/	Greenplum Database
/	Copyright (C) 2015 VMware, Inc. or its affiliates.
/
/	@filename:
/		CStatisticsConfig.cpp
/
/	@doc:
/		Implementation of statistics context
/---------------------------------------------------------------------------

#include "gpopt/engine/CStatisticsConfig.h"

#include "gpos/base.h"
#include "gpos/common/CAutoP.h"
#include "gpos/common/CHashMap.h"
#include "gpos/common/CHashMapIter.h"

#include "gpopt/base/CColRefSet.h"
#include "naucrates/traceflags/traceflags.h"

using namespace gpopt;

/---------------------------------------------------------------------------
/	@function:
/		CStatisticsConfig::CStatisticsConfig
/
/	@doc:
/		ctor
/
/---------------------------------------------------------------------------
CStatisticsConfig::CStatisticsConfig(CMemoryPool *mp,
									 CDouble damping_factor_filter,
									 CDouble damping_factor_join,
									 CDouble damping_factor_groupby,
									 ULONG max_stats_buckets)
	: m_mp(mp),
	  m_damping_factor_filter(damping_factor_filter),
	  m_damping_factor_join(damping_factor_join),
	  m_damping_factor_groupby(damping_factor_groupby),
	  m_max_stats_buckets(max_stats_buckets),
	  m_phsmdidcolinfo(nullptr)
{
	GPOS_ASSERT(CDouble(0.0) < damping_factor_filter);
	GPOS_ASSERT(CDouble(0.0) <= damping_factor_join);
	GPOS_ASSERT(CDouble(0.0) < damping_factor_groupby);
	GPOS_ASSERT(0 < max_stats_buckets);

	/m_phmmdidcolinfo = New(m_mp) HMMDIdMissingstatscol(m_mp);
	m_phsmdidcolinfo = GPOS_NEW(m_mp) MdidHashSet(m_mp);
}


/---------------------------------------------------------------------------
/	@function:
/		CStatisticsConfig::~CStatisticsConfig
/
/	@doc:
/		dtor
/		Does not de-allocate memory pool!
/
/---------------------------------------------------------------------------
CStatisticsConfig::~CStatisticsConfig()
{
	m_phsmdidcolinfo->Release();
}

/---------------------------------------------------------------------------
/      @function:
/              CStatisticsConfig::AddMissingStatsColumn
/
/      @doc:
/              Add the information about the column with the missing statistics
/
/---------------------------------------------------------------------------
void
CStatisticsConfig::AddMissingStatsColumn(CMDIdColStats *pmdidCol)
{
	GPOS_ASSERT(nullptr != pmdidCol);

	/ add the new column information to the hash set
	if (m_phsmdidcolinfo->Insert(pmdidCol))
	{
		pmdidCol->AddRef();
	}
}


/---------------------------------------------------------------------------
/      @function:
/              CStatisticsConfig::CollectMissingColumns
/
/      @doc:
/              Collect the columns with missing stats
/
/---------------------------------------------------------------------------
void
CStatisticsConfig::CollectMissingStatsColumns(IMdIdArray *pdrgmdid)
{
	GPOS_ASSERT(nullptr != pdrgmdid);

	MdidHashSetIter hsiter(m_phsmdidcolinfo);
	while (hsiter.Advance())
	{
		CMDIdColStats *mdid_col_stats =
			CMDIdColStats::CastMdid(const_cast<IMDId *>(hsiter.Get()));
		mdid_col_stats->AddRef();
		pdrgmdid->Append(mdid_col_stats);
	}
}


/ EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CEngine 源码

greenplumn CEnumeratorConfig 源码

greenplumn CPartialPlan 源码

  • 所属分类: 大数据
  • 本文标签: greenplum
  • 版权声明: 本文链接 https://seaxiang.com/blog/e96deec1704f46a794100720b10d09dc