//--------------------------------------------------------------------------- // @function: // CDistributionSpecHashed::PdsCopyWithRemappedColumns // // @doc: // Return a copy of the distribution spec with remapped columns // //--------------------------------------------------------------------------- CDistributionSpec * CDistributionSpecHashed::PdsCopyWithRemappedColumns ( IMemoryPool *pmp, HMUlCr *phmulcr, BOOL fMustExist ) { DrgPexpr *pdrgpexpr = GPOS_NEW(pmp) DrgPexpr(pmp); const ULONG ulLen = m_pdrgpexpr->UlLength(); for (ULONG ul = 0; ul < ulLen; ul++) { CExpression *pexpr = (*m_pdrgpexpr)[ul]; pdrgpexpr->Append(pexpr->PexprCopyWithRemappedColumns(pmp, phmulcr, fMustExist)); } if (NULL == m_pdshashedEquiv) { return GPOS_NEW(pmp) CDistributionSpecHashed(pdrgpexpr, m_fNullsColocated); } // copy equivalent distribution CDistributionSpec *pds = m_pdshashedEquiv->PdsCopyWithRemappedColumns(pmp, phmulcr, fMustExist); CDistributionSpecHashed *pdshashed = CDistributionSpecHashed::PdsConvert(pds); return GPOS_NEW(pmp) CDistributionSpecHashed(pdrgpexpr, m_fNullsColocated, pdshashed); }