//--------------------------------------------------------------------------- // @function: // CParseHandlerPhysicalDML::EndElement // // @doc: // Invoked by Xerces to process a closing tag // //--------------------------------------------------------------------------- void CParseHandlerPhysicalDML::EndElement ( const XMLCh* const, // xmlszUri, const XMLCh* const xmlszLocalname, const XMLCh* const // xmlszQname ) { EdxlDmlType edxldmltype = CParseHandlerPhysicalDML::EdxlDmlOpType(xmlszLocalname); if (EdxldmlSentinel == edxldmltype || m_edxldmltype != edxldmltype) { CWStringDynamic *pstr = CDXLUtils::PstrFromXMLCh(m_pphm->Pmm(), xmlszLocalname); GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag, pstr->Wsz()); } GPOS_ASSERT(5 == this->UlLength()); CParseHandlerProperties *pphProp = dynamic_cast<CParseHandlerProperties *>((*this)[0]); GPOS_ASSERT(NULL != pphProp->Pdxlprop()); CParseHandlerDirectDispatchInfo *pphDirectDispatch = dynamic_cast<CParseHandlerDirectDispatchInfo *>((*this)[1]); GPOS_ASSERT(NULL != pphDirectDispatch->Pdxlddinfo() && NULL != pphDirectDispatch->Pdxlddinfo()); CParseHandlerProjList *pphPrL = dynamic_cast<CParseHandlerProjList*>((*this)[2]); GPOS_ASSERT(NULL != pphPrL->Pdxln()); CParseHandlerTableDescr *pphTabDesc = dynamic_cast<CParseHandlerTableDescr*>((*this)[3]); GPOS_ASSERT(NULL != pphTabDesc->Pdxltabdesc()); CDXLTableDescr *pdxltabdesc = pphTabDesc->Pdxltabdesc(); pdxltabdesc->AddRef(); CParseHandlerPhysicalOp *pphChild = dynamic_cast<CParseHandlerPhysicalOp*>((*this)[4]); GPOS_ASSERT(NULL != pphChild->Pdxln()); CDXLDirectDispatchInfo *pdxlddinfo = pphDirectDispatch->Pdxlddinfo(); pdxlddinfo->AddRef(); CDXLPhysicalDML *pdxlop = GPOS_NEW(m_pmp) CDXLPhysicalDML(m_pmp, m_edxldmltype, pdxltabdesc, m_pdrgpul, m_ulAction, m_ulOid, m_ulCtid, m_ulSegmentId, m_fPreserveOids, m_ulTupleOidColId, pdxlddinfo, m_fInputSorted); m_pdxln = GPOS_NEW(m_pmp) CDXLNode(m_pmp, pdxlop); // set statistics and physical properties CParseHandlerUtils::SetProperties(m_pdxln, pphProp); AddChildFromParseHandler(pphPrL); AddChildFromParseHandler(pphChild); #ifdef GPOS_DEBUG m_pdxln->Pdxlop()->AssertValid(m_pdxln, false /* fValidateChildren */); #endif // GPOS_DEBUG // deactivate handler m_pphm->DeactivateHandler(); }
//--------------------------------------------------------------------------- // @function: // CParseHandlerPhysicalSplit::EndElement // // @doc: // Invoked by Xerces to process a closing tag // //--------------------------------------------------------------------------- void CParseHandlerPhysicalSplit::EndElement ( const XMLCh* const, // xmlszUri, const XMLCh* const xmlszLocalname, const XMLCh* const // xmlszQname ) { if (0 != XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenPhysicalSplit), xmlszLocalname)) { CWStringDynamic *pstr = CDXLUtils::PstrFromXMLCh(m_pphm->Pmm(), xmlszLocalname); GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag, pstr->Wsz()); } GPOS_ASSERT(3 == this->UlLength()); CParseHandlerProperties *pphProp = dynamic_cast<CParseHandlerProperties *>((*this)[0]); CParseHandlerProjList *pphPrL = dynamic_cast<CParseHandlerProjList*>((*this)[1]); GPOS_ASSERT(NULL != pphPrL->Pdxln()); CParseHandlerPhysicalOp *pphChild = dynamic_cast<CParseHandlerPhysicalOp*>((*this)[2]); GPOS_ASSERT(NULL != pphChild->Pdxln()); CDXLPhysicalSplit *pdxlop = GPOS_NEW(m_pmp) CDXLPhysicalSplit ( m_pmp, m_pdrgpulDelete, m_pdrgpulInsert, m_ulAction, m_ulCtid, m_ulSegmentId, m_fPreserveOids, m_ulTupleOidColId ); m_pdxln = GPOS_NEW(m_pmp) CDXLNode(m_pmp, pdxlop); // set statistics and physical properties CParseHandlerUtils::SetProperties(m_pdxln, pphProp); AddChildFromParseHandler(pphPrL); AddChildFromParseHandler(pphChild); #ifdef GPOS_DEBUG m_pdxln->Pdxlop()->AssertValid(m_pdxln, false /* fValidateChildren */); #endif // GPOS_DEBUG // deactivate handler m_pphm->DeactivateHandler(); }
//--------------------------------------------------------------------------- // @function: // CParseHandlerPhysicalCTAS::EndElement // // @doc: // Invoked by Xerces to process a closing tag // //--------------------------------------------------------------------------- void CParseHandlerPhysicalCTAS::EndElement ( const XMLCh* const, // xmlszUri, const XMLCh* const xmlszLocalname, const XMLCh* const // xmlszQname ) { if (0 != XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenPhysicalCTAS), xmlszLocalname)) { CWStringDynamic *pstr = CDXLUtils::PstrFromXMLCh(m_pphm->Pmm(), xmlszLocalname); GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag, pstr->Wsz()); } GPOS_ASSERT(5 == this->UlLength()); CParseHandlerProperties *pphProp = dynamic_cast<CParseHandlerProperties *>((*this)[0]); CParseHandlerColDescr *pphColDescr = dynamic_cast<CParseHandlerColDescr *>((*this)[1]); CParseHandlerCtasStorageOptions *pphCTASOptions = dynamic_cast<CParseHandlerCtasStorageOptions *>((*this)[2]); CParseHandlerProjList *pphPrL = dynamic_cast<CParseHandlerProjList*>((*this)[3]); GPOS_ASSERT(NULL != pphPrL->Pdxln()); CParseHandlerPhysicalOp *pphChild = dynamic_cast<CParseHandlerPhysicalOp*>((*this)[4]); GPOS_ASSERT(NULL != pphProp->Pdxlprop()); GPOS_ASSERT(NULL != pphColDescr->Pdrgpdxlcd()); GPOS_ASSERT(NULL != pphCTASOptions->Pdxlctasopt()); GPOS_ASSERT(NULL != pphPrL->Pdxln()); GPOS_ASSERT(NULL != pphChild->Pdxln()); DrgPdxlcd *pdrgpdxlcd = pphColDescr->Pdrgpdxlcd(); pdrgpdxlcd->AddRef(); CDXLCtasStorageOptions *pdxlctasopt = pphCTASOptions->Pdxlctasopt(); pdxlctasopt->AddRef(); m_pdxln = GPOS_NEW(m_pmp) CDXLNode ( m_pmp, GPOS_NEW(m_pmp) CDXLPhysicalCTAS ( m_pmp, m_pmdnameSchema, m_pmdname, pdrgpdxlcd, pdxlctasopt, m_ereldistrpolicy, m_pdrgpulDistr, m_fTemporary, m_fHasOids, m_erelstorage, m_pdrgpulSource, m_pdrgpiVarTypeMod ) ); // set statistics and physical properties CParseHandlerUtils::SetProperties(m_pdxln, pphProp); AddChildFromParseHandler(pphPrL); AddChildFromParseHandler(pphChild); #ifdef GPOS_DEBUG m_pdxln->Pdxlop()->AssertValid(m_pdxln, false /* fValidateChildren */); #endif // GPOS_DEBUG // deactivate handler m_pphm->DeactivateHandler(); }