You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "apcahephoenix (JIRA)" <ji...@apache.org> on 2018/12/19 02:55:00 UTC

[jira] [Created] (HBASE-21617) HBase Bytes.putBigDecimal error

apcahephoenix created HBASE-21617:
-------------------------------------

             Summary: HBase Bytes.putBigDecimal error
                 Key: HBASE-21617
                 URL: https://issues.apache.org/jira/browse/HBASE-21617
             Project: HBase
          Issue Type: Bug
          Components: util
    Affects Versions: 2.1.1, 2.0.0, 2.1.0
         Environment: JDK 1.8
            Reporter: apcahephoenix


*hbase-common/*

*org.apache.hadoop.hbase.util.Bytes:*

public static int putBigDecimal(byte[] bytes, int offset, BigDecimal val) {
  if (bytes == null){

    return offset;

  }

  byte[] valueBytes = val.unscaledValue().toByteArray();
  byte[] result = new byte[valueBytes.length + SIZEOF_INT];
  offset = putInt(result, offset, val.scale());
{color:#d04437}return putBytes(result, offset, valueBytes, 0, valueBytes.length); // this one, bytes is not used{color}
 }

*Test:*
 byte[] bytes = new byte[64];
 BigDecimal bigDecimal = new BigDecimal("100.10");
 Bytes.putBigDecimal(bytes, 4, bigDecimal);
 System.out.println(Arrays.toString(bytes)); // invalid

*Suggest:*
 public static int putBigDecimal(byte[] bytes, int offset, BigDecimal val) {
  byte[] valueBytes = toBytes(val);
  return putBytes(bytes, offset, valueBytes, 0, valueBytes.length);
 }



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)