code: func evalNumDecArgsForFormat(f builtinFunc, row chunk.Row) (string, string, bool, error) {
  	var xStr string
  	arg0, arg1 := f.getArgs()[0], f.getArgs()[1]
  	ctx := f.getCtx()
  	if arg0.GetType().EvalType() == types.ETDecimal {
  		x, isNull, err := arg0.EvalDecimal(ctx, row)
  		if isNull || err != nil {
  			return "", "", isNull, err
  		}
  		xStr = x.String()
  	} else {
  		x, isNull, err := arg0.EvalReal(ctx, row)
  		if isNull || err != nil {
  			return "", "", isNull, err
  		}
  		xStr = strconv.FormatFloat(x, 'f', -1, 64)
  	}
  	d, isNull, err := arg1.EvalInt(ctx, row)
  	if isNull || err != nil {
  		return "", "", isNull, err
  	}
  	if d < 0 {
  		d = 0
  	} else if d > formatMaxDecimals {
  		d = formatMaxDecimals
  	}
  	xStr = roundFormatArgs(xStr, int(d))
  	dStr := strconv.FormatInt(d, 10)
  	return xStr, dStr, false, nil
  }
docs: // evalNumDecArgsForFormat evaluates first 2 arguments, i.e, x and d, for function `format`.