code: func (p *Selection) convert2PhysicalPlanEnforce(prop *requiredProperty) (*physicalPlanInfo, error) {
  	child := p.GetChildByIndex(0).(LogicalPlan)
  	info, err := child.convert2PhysicalPlan(&requiredProperty{})
  	if err != nil {
  		return nil, errors.Trace(err)
  	}
  	if prop.limit != nil && len(prop.props) > 0 {
  		if t, ok := info.p.(physicalDistSQLPlan); ok {
  			t.addTopN(p.ctx, prop)
  		}
  		info = enforceProperty(prop, info)
  	} else if len(prop.props) != 0 {
  		info.cost = math.MaxFloat64
  	}
  	return info, nil
  }
docs: // convert2PhysicalPlanEnforce converts a selection to *physicalPlanInfo which does not push the
  // required property to the children, but enforce the property instead.