code: func (b *builtinFloorDecToDecSig) evalDecimal(row chunk.Row) (*types.MyDecimal, bool, error) {
  	val, isNull, err := b.args[0].EvalDecimal(b.ctx, row)
  	if isNull || err != nil {
  		return nil, true, err
  	}
  
  	res := new(types.MyDecimal)
  	if !val.IsNegative() {
  		err = val.Round(res, 0, types.ModeTruncate)
  		return res, err != nil, err
  	}
  
  	err = val.Round(res, 0, types.ModeTruncate)
  	if err != nil || res.Compare(val) == 0 {
  		return res, err != nil, err
  	}
  
  	err = types.DecimalSub(res, types.NewDecFromInt(1), res)
  	return res, err != nil, err
  }
docs: // evalDecimal evals a builtinFloorDecToDecSig.