http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/752a98cd/src/backend/gpopt/utils/COptTasks.cpp ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/utils/COptTasks.cpp b/src/backend/gpopt/utils/COptTasks.cpp index 6ff6556..4d6e2f7 100644 --- a/src/backend/gpopt/utils/COptTasks.cpp +++ b/src/backend/gpopt/utils/COptTasks.cpp @@ -41,7 +41,6 @@ #include "gpopt/translate/CTranslatorExprToDXL.h" #include "gpopt/translate/CTranslatorUtils.h" #include "gpopt/translate/CTranslatorQueryToDXL.h" -#include "gpopt/translate/CTranslatorPlStmtToDXL.h" #include "gpopt/translate/CTranslatorDXLToPlStmt.h" #include "gpopt/translate/CTranslatorDXLToQuery.h" #include "gpopt/translate/CContextDXLToPlStmt.h" @@ -1234,64 +1233,6 @@ COptTasks::PvOptimizeMinidumpTask return NULL; } - -//--------------------------------------------------------------------------- -// @function: -// COptTasks::PvDXLFromPlstmtTask -// -// @doc: -// task that does the translation from planned stmt to XML -// -//--------------------------------------------------------------------------- -void* -COptTasks::PvDXLFromPlstmtTask - ( - void *pv - ) -{ - GPOS_ASSERT(NULL != pv); - - SOptContext *poctx = SOptContext::PoptctxtConvert(pv); - - GPOS_ASSERT(NULL != poctx->m_pplstmt); - GPOS_ASSERT(NULL == poctx->m_szPlanDXL); - - AUTO_MEM_POOL(amp); - IMemoryPool *pmp = amp.Pmp(); - - CIdGenerator idgtor(1); - - // relcache MD provider - CMDProviderRelcache *pmdpr = GPOS_NEW(pmp) CMDProviderRelcache(pmp); - - { - CAutoMDAccessor amda(pmp, pmdpr, sysidDefault); - - CMappingParamIdScalarId mapps(pmp); - - CTranslatorPlStmtToDXL tplstmtdxl(pmp, amda.Pmda(), &idgtor, (PlannedStmt*) poctx->m_pplstmt, &mapps); - CDXLNode *pdxlnPlan = tplstmtdxl.PdxlnFromPlstmt(); - - GPOS_ASSERT(NULL != pdxlnPlan); - - CWStringDynamic str(pmp); - COstreamString oss(&str); - - // get chosen plan number - ULLONG ullPlanId = (ULLONG) optimizer_plan_id; - CWStringDynamic *pstrDXL = CDXLUtils::PstrSerializePlan(pmp, pdxlnPlan, ullPlanId, 0 /*ullPlanSpaceSize*/, true /*fSerializeHeaderFooter*/, true /*fIndent*/); - - poctx->m_szPlanDXL = SzFromWsz(pstrDXL->Wsz()); - - // cleanup - GPOS_DELETE(pstrDXL); - pdxlnPlan->Release(); - } - - return NULL; -} - - //--------------------------------------------------------------------------- // @function: // COptTasks::PvPlstmtFromDXLTask @@ -1773,34 +1714,6 @@ COptTasks::SzDXL //--------------------------------------------------------------------------- // @function: -// COptTasks::SzDXL -// -// @doc: -// serializes planned stmt to DXL -// -//--------------------------------------------------------------------------- -char * -COptTasks::SzDXL - ( - PlannedStmt *pplstmt - ) -{ - Assert(pplstmt); - - SOptContext octx; - octx.m_pplstmt = pplstmt; - octx.m_fSerializePlanDXL = true; - Execute(&PvDXLFromPlstmtTask, &octx); - - // clean up context - octx.Free(octx.epinPlStmt, octx.epinPlanDXL); - - return octx.m_szPlanDXL; -} - - -//--------------------------------------------------------------------------- -// @function: // COptTasks::PqueryFromXML // // @doc:
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/752a98cd/src/backend/gpopt/utils/funcs.cpp ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/utils/funcs.cpp b/src/backend/gpopt/utils/funcs.cpp index c36a7e3..dbecb60 100644 --- a/src/backend/gpopt/utils/funcs.cpp +++ b/src/backend/gpopt/utils/funcs.cpp @@ -64,8 +64,6 @@ PG_FUNCTION_INFO_V1(DumpPlan); PG_FUNCTION_INFO_V1(RestorePlan); PG_FUNCTION_INFO_V1(DumpPlanToFile); PG_FUNCTION_INFO_V1(RestorePlanFromFile); -PG_FUNCTION_INFO_V1(DumpPlanDXL); -PG_FUNCTION_INFO_V1(DumpPlanToDXLFile); PG_FUNCTION_INFO_V1(RestorePlanDXL); PG_FUNCTION_INFO_V1(RestorePlanFromDXLFile); PG_FUNCTION_INFO_V1(DumpMDObjDXL); @@ -381,37 +379,6 @@ DumpQueryToFile(PG_FUNCTION_ARGS) //--------------------------------------------------------------------------- // @function: -// DumpPlanDXL -// -// @doc: -// Plan a query and dump out plan as xml text. -// Input: sql query text -// Output: plan in dxl -// -//--------------------------------------------------------------------------- - -extern "C" { -Datum -DumpPlanDXL(PG_FUNCTION_ARGS) -{ - char *szSqlText = textToString(PG_GETARG_TEXT_P(0)); - - PlannedStmt *pplstmt = planQuery(szSqlText); - - Assert(pplstmt); - - char *szXmlString = COptTasks::SzDXL(pplstmt); - if (NULL == szXmlString) - { - elog(ERROR, "Error translating plan to DXL"); - } - - PG_RETURN_TEXT_P(stringToText(szXmlString)); -} -} - -//--------------------------------------------------------------------------- -// @function: // DumpQueryDXL // // @doc: @@ -760,39 +727,6 @@ RestorePlanFromDXLFile(PG_FUNCTION_ARGS) //--------------------------------------------------------------------------- // @function: -// DumpPlanToDXLFile -// -// @doc: -// -// -//--------------------------------------------------------------------------- - -extern "C" { -Datum -DumpPlanToDXLFile(PG_FUNCTION_ARGS) -{ - char *szSql = textToString(PG_GETARG_TEXT_P(0)); - char *szFilename = textToString(PG_GETARG_TEXT_P(1)); - - PlannedStmt *pplstmt = planQuery(szSql); - Assert(pplstmt); - - char *szXmlString = COptTasks::SzDXL(pplstmt); - - int iLen = (int) gpos::clib::UlStrLen(szXmlString); - - CFileWriter fw; - fw.Open(szFilename, S_IRUSR | S_IWUSR); - fw.Write(reinterpret_cast<const BYTE*>(szXmlString), iLen + 1); - fw.Close(); - - PG_RETURN_INT32(iLen); - -} -} - -//--------------------------------------------------------------------------- -// @function: // DumpMDObjDXL // // @doc: http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/752a98cd/src/backend/gpopt/utils/load.sql ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/utils/load.sql b/src/backend/gpopt/utils/load.sql index 90cf083..bfe7d67 100644 --- a/src/backend/gpopt/utils/load.sql +++ b/src/backend/gpopt/utils/load.sql @@ -14,12 +14,6 @@ language c strict; create function gpoptutils.RestorePlanFromFile(text) returns text as '/Users/solimm1/greenplum-db-devel/lib/libgpoptudf.dylib', 'RestorePlanFromFile' language c strict; -create function gpoptutils.DumpPlanDXL(text) returns text as '/Users/solimm1/greenplum-db-devel/lib/libgpoptudf.dylib', 'DumpPlanDXL' -language c strict; - -create function gpoptutils.DumpPlanToDXLFile(text, text) returns int as '/Users/solimm1/greenplum-db-devel/lib/libgpoptudf.dylib', 'DumpPlanToDXLFile' -language c strict; - create function gpoptutils.RestorePlanDXL(text) returns text as '/Users/solimm1/greenplum-db-devel/lib/libgpoptudf.dylib', 'RestorePlanDXL' language c strict; create function gpoptutils.RestorePlanFromDXLFile(text) returns text as '/Users/solimm1/greenplum-db-devel/lib/libgpoptudf.dylib', 'RestorePlanFromDXLFile' language c strict; http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/752a98cd/src/include/gpopt/translate/CTranslatorPlStmtToDXL.h ---------------------------------------------------------------------- diff --git a/src/include/gpopt/translate/CTranslatorPlStmtToDXL.h b/src/include/gpopt/translate/CTranslatorPlStmtToDXL.h deleted file mode 100644 index 09b16d6..0000000 --- a/src/include/gpopt/translate/CTranslatorPlStmtToDXL.h +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -//--------------------------------------------------------------------------- -// @filename: -// CTranslatorPlStmtToDXL.h -// -// @doc: -// Class providing methods for translating GPDB's PlannedStmt into DXL Tree -// -// @test: -// -// -//--------------------------------------------------------------------------- - -#ifndef GPDXL_CTranslatorPlStmtToDXL_H -#define GPDXL_CTranslatorPlStmtToDXL_H - -#include "gpopt/translate/CTranslatorScalarToDXL.h" -#include "gpopt/translate/CMappingParamIdScalarId.h" - -#include "gpos/base.h" - -#include "naucrates/dxl/operators/dxlops.h" -#include "naucrates/dxl/CIdGenerator.h" - -#include "naucrates/md/IMDIndex.h" - - -// fwd declarations -namespace gpopt -{ - class CMDAccessor; -} - -struct Const; -struct List; -struct PlannedStmt; -struct Scan; -struct HashJoin; -struct Hash; -struct RangeTblEntry; -struct NestLoop; -struct MergeJoin; -struct Motion; -struct Limit; -struct Agg; -struct Append; -struct Sort; -struct SubqueryScan; -struct Result; -struct Unique; -struct Material; -struct ShareInputScan; -struct IndexScan; - -typedef OpExpr DistintExpr; -typedef Scan SeqScan; - -namespace gpdxl -{ - using namespace gpopt; - - class CDXLNode; - class CMappingVarColId; - - //--------------------------------------------------------------------------- - // @class: - // CTranslatorPlStmtToDXL - // - // @doc: - // Class providing methods for translating GPDB's PlannedStmt into DXL Tree. - // - //--------------------------------------------------------------------------- - class CTranslatorPlStmtToDXL - { - // shorthand for functions for translating GPDB expressions into DXL nodes - typedef CDXLNode * (CTranslatorPlStmtToDXL::*PfPdxln)(const Plan *pplan); - - private: - - // pair of node tag and translator function - struct STranslatorElem - { - NodeTag ent; - PfPdxln pf; - }; - - // memory pool - IMemoryPool *m_pmp; - - // meta data accessor - CMDAccessor *m_pmda; - - // counter for generating unique column ids - CIdGenerator *m_pidgtor; - - // planned stmt being translated - PlannedStmt *m_pplstmt; - - // translator for scalar expressions - CTranslatorScalarToDXL *m_psctranslator; - - // project lists of already translated shared scans indexed by the shared scan id - HMUlPdxln *m_phmuldxlnSharedScanProjLists; - - // mapping from param id -> scalar id in subplans - CMappingParamIdScalarId *m_pparammapping; - - // private copy ctor - CTranslatorPlStmtToDXL(const CTranslatorPlStmtToDXL&); - - // create DXL table scan node from a scan plan node - CDXLNode *PdxlnTblScanFromPlan(const Plan *pplan); - - // create DXL physical TVF node from a FunctionScan plan node - CDXLNode *PdxlnFunctionScanFromPlan(const Plan *pplan); - - // create DXL physical result node from a folded function expression - CDXLNode *PdxlnResultFromFoldedFuncExpr - ( - const Expr *pexpr, - CWStringDynamic *pstrAlias, - CDXLPhysicalProperties *pdxlprop, - CMappingVarColId *pmapvarcolid - ); - - // create DXL index scan node from an index plan node - CDXLNode *PdxlnIndexScanFromPlan(const Plan *pplan); - - // create a DXL index (only) scan node from a GPDB index (only) scan node. - CDXLNode *PdxlnIndexScanFromGPDBIndexScan(const IndexScan *pindexscan, BOOL fIndexOnlyScan); - - // create DXL hash join node from a hash join plan node - CDXLNode *PdxlnHashjoinFromPlan(const Plan *pplan); - - // create DXL hash node from a hash plan node - CDXLNode *PdxlnHashFromPlan(const Plan *pplan); - - // create DXL nested loop join node from a nested loop join plan node - CDXLNode *PdxlnNLJoinFromPlan(const Plan *pplan); - - // create DXL merge join node from a merge join plan node - CDXLNode *PdxlnMergeJoinFromPlan(const Plan *pplan); - - // create DXL result node from a result plan node - CDXLNode *PdxlnResultFromPlan(const Plan *pplan); - - // create DXL Limit node from a Limit plan node - CDXLNode *PdxlnLimitFromPlan(const Plan *pplan); - - // create DXL redistribute motion node from a motion plan node - CDXLNode *PdxlnMotionFromPlan(const Plan *pplan); - - // create DXL aggregate node from an Agg plan node - CDXLNode *PdxlnAggFromPlan(const Plan *pplan); - - // create DXL window node from an window plan node - CDXLNode *PdxlnWindowFromPlan(const Plan *pplan); - - // create DXL aggregate node from a Unique plan node - CDXLNode *PdxlnUniqueFromPlan(const Plan *pplan); - - // create DXL sort node from a Sort plan node - CDXLNode *PdxlnSortFromPlan(const Plan *pplan); - - CDXLNode *PdxlnSubqueryScanFromPlan(const Plan *pplan); - - // create DXL append node from an Append plan node - CDXLNode *PdxlnAppendFromPlan(const Plan *pplan); - - // create DXL shared scan node from a ShareInputScan plan node - CDXLNode *PdxlnSharedScanFromPlan(const Plan *pplan); - - // create DXL materialize node from a Material plan node - CDXLNode *PdxlnMaterializeFromPlan(const Plan *pplan); - - // create DXL sequence node from a Sequence plan node - CDXLNode *PdxlnSequence(const Plan *pplan); - - // create DXL dynamic table scan node from the corresponding plan node - CDXLNode *PdxlnDynamicTableScan(const Plan *pplan); - - // create a DXL table descriptor from a range table entry - CDXLTableDescr *Pdxltabdesc(const RangeTblEntry *prte, const Scan *psscan); - - // create a DXL projection list of a scan node from GPDB target list - CDXLNode *PdxlnPrLFromTL - ( - List *plTargetList, - CMappingVarColId *pmapvarcolid - ); - - // extract cost estimates from Plan structures and store them in a - // DXL properties container - CDXLPhysicalProperties *PdxlpropFromPlan(const Plan *pplan); - - // translate the hash expression list for a redistribute motion node into a DXL node - CDXLNode *PdxlnHashExprLFromList(List *, List *, const CDXLNode *); - - // translate the sorting column list for a sort or motion node into a DXL node - CDXLNode *PdxlnSortingColListFromPlan(AttrNumber *patnoSortColIds, OID *poidSortOpIds, ULONG ulNumCols, const CDXLNode *pdxlnPrL); - - // translate target and qual lists into DXL project list and filter, - // respectively - void TranslateTListAndQual - ( - List *plTargetList, - List *plQual, - ULONG ulRTEIndex, - const CDXLTableDescr *pdxltabdesc, - const IMDIndex *pmdindex, - const CDXLNode *pdxlnPrLLeft, - const CDXLNode *pdxlnPrLRight, - CDXLNode **ppdxlnPrLOut, - CDXLNode **ppdxlnFilterOut - ); - - // populate the input and output segments id lists from a Motion node - void TranslateMotionSegmentInfo - ( - const Motion *pmotion, - DrgPi *pdrgpiInputSegIds, - DrgPi *pdrgpiOutputSegIds - ); - - // creates a DXL shared scan spool info structure from a GPDB shared scan node - CDXLSpoolInfo *PspoolinfoFromSharedScan(const ShareInputScan *pshscan); - - public: - // ctor/dtor - CTranslatorPlStmtToDXL - ( - IMemoryPool *pmp, - CMDAccessor *pmda, - CIdGenerator *pulIdGenerator, - PlannedStmt *pplstmt, - CMappingParamIdScalarId *pmapps - ); - - ~CTranslatorPlStmtToDXL(); - - // main translation routine for PlannedStmt -> DXL tree - CDXLNode *PdxlnFromPlstmt(); - - // translates a PlannedStmt node into a DXL tree - CDXLNode *PdxlnFromPlan(const Plan *pplan); - - }; -} - -#endif // !GPDXL_CTranslatorPlStmtToDXL_H - -// EOF http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/752a98cd/src/include/gpopt/utils/COptTasks.h ---------------------------------------------------------------------- diff --git a/src/include/gpopt/utils/COptTasks.h b/src/include/gpopt/utils/COptTasks.h index cad5e29..a62155f 100644 --- a/src/include/gpopt/utils/COptTasks.h +++ b/src/include/gpopt/utils/COptTasks.h @@ -179,10 +179,6 @@ class COptTasks static void Execute ( void *(*pfunc) (void *), void *pfuncArg); - // task that does the translation from planned stmt to XML - static - void* PvDXLFromPlstmtTask(void *pv); - // task that does the translation from xml to dxl to pplstmt static void* PvPlstmtFromDXLTask(void *pv); @@ -285,10 +281,6 @@ class COptTasks static char *SzDXL(Query *pquery); - // convert planned statement to DXL to xml string. - static - char *SzDXL(PlannedStmt *pplstmt); - // convert xml string to DXL and to Query static Query *PqueryFromXML(char *szXmlString);
