//--------------------------------------------------------------------------- // Greenplum Database // Copyright (C) 2018-Present VMware, Inc. or its affiliates. // // @filename: // CContextQueryToDXL.cpp // // @doc: // Implementation of the methods used to hold information about // the whole query, when translate a query into DXL tree. All // translator methods allocate memory in the provided memory pool, // and the caller is responsible for freeing it // //--------------------------------------------------------------------------- extern "C" { #include "postgres.h" } #include "gpopt/translate/CContextQueryToDXL.h" #include "gpopt/translate/CTranslatorUtils.h" #include "naucrates/dxl/CIdGenerator.h" using namespace gpdxl; CContextQueryToDXL::CContextQueryToDXL(CMemoryPool *mp) : m_mp(mp), m_has_distributed_tables(false), m_distribution_hashops(DistrHashOpsNotDeterminedYet) { // map that stores gpdb att to optimizer col mapping m_colid_counter = GPOS_NEW(mp) CIdGenerator(GPDXL_COL_ID_START); m_queryid_counter = GPOS_NEW(mp) CIdGenerator(GPDXL_QUERY_ID_START); m_cte_id_counter = GPOS_NEW(mp) CIdGenerator(GPDXL_CTE_ID_START); } CContextQueryToDXL::~CContextQueryToDXL() { GPOS_DELETE(m_queryid_counter); GPOS_DELETE(m_colid_counter); GPOS_DELETE(m_cte_id_counter); } ULONG CContextQueryToDXL::GetNextQueryId() { return m_queryid_counter->next_id(); }