//--------------------------------------------------------------------------- // @function: // CParseHandlerScalarSubPlanTestExpr::EndElement // // @doc: // Processes a Xerces end element event // //--------------------------------------------------------------------------- void CParseHandlerScalarSubPlanTestExpr::EndElement ( const XMLCh* const, // xmlszUri, const XMLCh* const xmlszLocalname, const XMLCh* const // xmlszQname ) { if(0 != XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenScalarSubPlanTestExpr), xmlszLocalname) && NULL != m_pdxlnTestExpr) { CWStringDynamic *pstr = CDXLUtils::PstrFromXMLCh(m_pphm->Pmm(), xmlszLocalname); GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag, pstr->Wsz()); } if (0 < this->UlLength()) { CParseHandlerScalarOp *pphChild = dynamic_cast<CParseHandlerScalarOp *>((*this)[0]); if (NULL != pphChild->Pdxln()) { m_pdxlnTestExpr = pphChild->Pdxln(); m_pdxlnTestExpr->AddRef(); } } // deactivate handler m_pphm->DeactivateHandler(); }
//--------------------------------------------------------------------------- // @function: // CParseHandlerDefaultValueExpr::EndElement // // @doc: // Processes a Xerces end element event // //--------------------------------------------------------------------------- void CParseHandlerDefaultValueExpr::EndElement ( const XMLCh* const, // xmlszUri, const XMLCh* const xmlszLocalname, const XMLCh* const // xmlszQname ) { if(0 != XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenColumnDefaultValue), xmlszLocalname)) { CWStringDynamic *pstr = CDXLUtils::PstrFromXMLCh(m_pphm->Pmm(), xmlszLocalname); GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag, pstr->Wsz()); } if (0 < this->UlLength()) { GPOS_ASSERT(1 == this->UlLength()); // get node for default value expression from child parse handler CParseHandlerScalarOp *pphChild = dynamic_cast<CParseHandlerScalarOp *>((*this)[0]); m_pdxln = pphChild->Pdxln(); m_pdxln->AddRef(); } // deactivate handler m_pphm->DeactivateHandler(); }
//--------------------------------------------------------------------------- // @function: // CParseHandlerMetadataColumn::EndElement // // @doc: // Invoked by Xerces to process a closing tag // //--------------------------------------------------------------------------- void CParseHandlerMetadataColumn::EndElement ( const XMLCh* const, // xmlszUri, const XMLCh* const xmlszLocalname, const XMLCh* const // xmlszQname ) { if(0 != XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenColumn), xmlszLocalname)) { CWStringDynamic *pstr = CDXLUtils::PstrFromXMLCh(m_pphm->Pmm(), xmlszLocalname); GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag, pstr->Wsz()); } GPOS_ASSERT(1 == this->UlLength()); // get node for default value expression from child parse handler CParseHandlerScalarOp *pphOp = dynamic_cast<CParseHandlerScalarOp *>((*this)[0]); m_pdxlnDefaultValue = pphOp->Pdxln(); if (NULL != m_pdxlnDefaultValue) { m_pdxlnDefaultValue->AddRef(); } m_pmdcol = GPOS_NEW(m_pmp) CMDColumn ( m_pmdname, m_iAttNo, m_pmdidType, m_fNullable, m_fDropped, m_pdxlnDefaultValue, m_ulWidth ); // deactivate handler m_pphm->DeactivateHandler(); }
//--------------------------------------------------------------------------- // @function: // CParseHandlerMDRelation::EndElement // // @doc: // Invoked by Xerces to process a closing tag // //--------------------------------------------------------------------------- void CParseHandlerMDRelation::EndElement ( const XMLCh* const, // xmlszUri, const XMLCh* const xmlszLocalname, const XMLCh* const // xmlszQname ) { if (0 == XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenPartConstraint), xmlszLocalname)) { CParseHandlerScalarOp *pphPartCnstr = dynamic_cast<CParseHandlerScalarOp *>((*this)[UlLength() - 1]); CDXLNode *pdxlnPartConstraint = pphPartCnstr->Pdxln(); pdxlnPartConstraint->AddRef(); m_ppartcnstr = GPOS_NEW(m_pmp) CMDPartConstraintGPDB(m_pmp, pdxlnPartConstraint, m_pdrgpulDefaultParts, m_fPartConstraintUnbounded); return; } if (0 != XMLString::compareString(CDXLTokens::XmlstrToken(EdxltokenRelation), xmlszLocalname)) { CWStringDynamic *pstr = CDXLUtils::PstrFromXMLCh(m_pphm->Pmm(), xmlszLocalname); GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiDXLUnexpectedTag, pstr->Wsz()); } // construct metadata object from the created child elements CParseHandlerMetadataColumns *pphMdCol = dynamic_cast<CParseHandlerMetadataColumns *>((*this)[0]); CParseHandlerMetadataIdList *pphMdidlIndices = dynamic_cast<CParseHandlerMetadataIdList*>((*this)[1]); CParseHandlerMetadataIdList *pphMdidlTriggers = dynamic_cast<CParseHandlerMetadataIdList*>((*this)[2]); CParseHandlerMetadataIdList *pphMdidlCheckConstraints = dynamic_cast<CParseHandlerMetadataIdList*>((*this)[3]); GPOS_ASSERT(NULL != pphMdCol->Pdrgpmdcol()); GPOS_ASSERT(NULL != pphMdidlIndices->Pdrgpmdid()); GPOS_ASSERT(NULL != pphMdidlCheckConstraints->Pdrgpmdid()); // refcount child objects DrgPmdcol *pdrgpmdcol = pphMdCol->Pdrgpmdcol(); DrgPmdid *pdrgpmdidIndices = pphMdidlIndices->Pdrgpmdid(); DrgPmdid *pdrgpmdidTriggers = pphMdidlTriggers->Pdrgpmdid(); DrgPmdid *pdrgpmdidCheckConstraint = pphMdidlCheckConstraints->Pdrgpmdid(); pdrgpmdcol->AddRef(); pdrgpmdidIndices->AddRef(); pdrgpmdidTriggers->AddRef(); pdrgpmdidCheckConstraint->AddRef(); m_pimdobj = GPOS_NEW(m_pmp) CMDRelationGPDB ( m_pmp, m_pmdid, m_pmdname, m_fTemporary, m_erelstorage, m_ereldistrpolicy, pdrgpmdcol, m_pdrgpulDistrColumns, m_pdrgpulPartColumns, m_fConvertHashToRandom, m_pdrgpdrgpulKeys, pdrgpmdidIndices, pdrgpmdidTriggers, pdrgpmdidCheckConstraint, m_ppartcnstr, m_fHasOids ); // deactivate handler m_pphm->DeactivateHandler(); }