code: func (b *builtinRepeatSig) evalString(row chunk.Row) (d string, isNull bool, err error) {
  	str, isNull, err := b.args[0].EvalString(b.ctx, row)
  	if isNull || err != nil {
  		return "", isNull, err
  	}
  	byteLength := len(str)
  
  	num, isNull, err := b.args[1].EvalInt(b.ctx, row)
  	if isNull || err != nil {
  		return "", isNull, err
  	}
  	if num < 1 {
  		return "", false, nil
  	}
  	if num > math.MaxInt32 {
  		num = math.MaxInt32
  	}
  
  	if uint64(byteLength)*uint64(num) > b.maxAllowedPacket {
  		b.ctx.GetSessionVars().StmtCtx.AppendWarning(errWarnAllowedPacketOverflowed.GenWithStackByArgs("repeat", b.maxAllowedPacket))
  		return "", true, nil
  	}
  
  	if int64(byteLength) > int64(b.tp.Flen)/num {
  		return "", true, nil
  	}
  	return strings.Repeat(str, int(num)), false, nil
  }
docs: // evalString evals a builtinRepeatSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_repeat