code: func EncodeDecimal(b []byte, d types.Datum) []byte {
  	dec := d.GetMysqlDecimal()
  	precision := d.Length()
  	frac := d.Frac()
  	if precision == 0 {
  		precision, frac = dec.PrecisionAndFrac()
  	}
  	b = append(b, byte(precision), byte(frac))
  	bin, err := dec.ToBin(precision, frac)
  	if err != nil {
  		log.Printf("should not happen, precision %d, frac %d %v", precision, frac, err)
  		return b
  	}
  	b = append(b, bin...)
  	return b
  }
docs: // EncodeDecimal encodes a decimal d into a byte slice which can be sorted lexicographically later.