//--------------------------------------------------------------------------- // @function: // CPhysicalSpool::PrsDerive // // @doc: // Derive rewindability // //-------------------------------------------------------------------------- CRewindabilitySpec * CPhysicalSpool::PrsDerive ( IMemoryPool *mp, CExpressionHandle &exprhdl ) const { CRewindabilitySpec *prsChild = PrsDerivePassThruOuter(exprhdl); CRewindabilitySpec::EMotionHazardType motion_hazard = (!FEager() && prsChild->HasMotionHazard()) ? CRewindabilitySpec::EmhtMotion : CRewindabilitySpec::EmhtNoMotion; prsChild->Release(); return GPOS_NEW(mp) CRewindabilitySpec(CRewindabilitySpec::ErtRewindable, motion_hazard); }