code: func (mmf *maxMinFunction) StreamUpdate(row []types.Datum, ectx context.Context) error {
  	ctx := mmf.getStreamedContext()
  	if len(mmf.Args) != 1 {
  		return errors.New("Wrong number of args for AggFuncMaxMin")
  	}
  	a := mmf.Args[0]
  	value, err := a.Eval(row, ectx)
  	if err != nil {
  		return errors.Trace(err)
  	}
  	if ctx.Value.IsNull() {
  		ctx.Value = value
  	}
  	if value.IsNull() {
  		return nil
  	}
  	var c int
  	c, err = ctx.Value.CompareDatum(ectx.GetSessionVars().StmtCtx, value)
  	if err != nil {
  		return errors.Trace(err)
  	}
  	if (mmf.isMax && c == -1) || (!mmf.isMax && c == 1) {
  		ctx.Value = value
  	}
  	return nil
  }
docs: // StreamUpdate implements AggregationFunction interface.