//--------------------------------------------------------------------------- // Greenplum Database // Copyright (C) 2011 Greenplum, Inc. // // @filename: // CContextQueryToDXL.h // // @doc: // Class to hold information about a whole top-level query, while // recursively translating a Query tree to DXL tree. // //--------------------------------------------------------------------------- #ifndef GPDXL_CContextQueryToDXL_H #define GPDXL_CContextQueryToDXL_H #include "gpos/base.h" #include "gpopt/translate/CTranslatorUtils.h" #include "naucrates/dxl/CIdGenerator.h" #include "naucrates/dxl/operators/CDXLNode.h" #define GPDXL_CTE_ID_START 1 #define GPDXL_COL_ID_START 1 #define GPDXL_QUERY_ID_START 1 namespace gpdxl { // fwd declarations class CTranslatorQueryToDXL; class CTranslatorScalarToDXL; //--------------------------------------------------------------------------- // @class: // CContextQueryToDXL // // @doc: // Class to hold information about a whole top-level query, while // recursively translating a Query tree to DXL tree. // //--------------------------------------------------------------------------- class CContextQueryToDXL { friend class CTranslatorQueryToDXL; friend class CTranslatorScalarToDXL; private: // memory pool CMemoryPool *m_mp; // counter for generating unique column ids CIdGenerator *m_colid_counter; // counter for generating unique CTE ids CIdGenerator *m_cte_id_counter; // counter for upper-level query and its subqueries CIdGenerator *m_queryid_counter; // does the query have any distributed tables? BOOL m_has_distributed_tables; // What operator classes are used in the distribution keys? DistributionHashOpsKind m_distribution_hashops; public: // ctor CContextQueryToDXL(CMemoryPool *mp); // dtor ~CContextQueryToDXL(); ULONG GetNextQueryId(); }; } // namespace gpdxl #endif // GPDXL_CContextQueryToDXL_H //EOF