code: func (p *PhysicalTopN) canPushDown() bool {
  	exprs := make([]expression.Expression, 0, len(p.ByItems))
  	for _, item := range p.ByItems {
  		exprs = append(exprs, item.Expr)
  	}
  	_, _, remained := expression.ExpressionsToPB(p.ctx.GetSessionVars().StmtCtx, exprs, p.ctx.GetClient())
  	return len(remained) == 0
  }
docs: // canPushDown checks if this topN can be pushed down. If each of the expression can be converted to pb, it can be pushed.