odps-sdk/odps-sdk-core/src/main/java/com/aliyun/odps/tunnel/hasher/DefaultHashFactory.java [385:398]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    public int hash(DecimalHashObject obj) {
      if (obj == null) {
        return 0;
      }
      BigDecimal val = obj.val();
      int precision = obj.precision();
      int scale = obj.scale();
      BigInteger bi = castBigDecimal2BigInteger(val.toString(), precision, scale);
      if (isDecimal128(precision)) {
        // Reference to task/sql_task/execution_engine/ir/hash_ir.cpp:HashInt1284Row
        return basicLongHasher(bi.longValue()) + basicLongHasher(bi.shiftRight(64).longValue());
      }
      return basicLongHasher(bi.longValue());
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



odps-sdk/odps-sdk-core/src/main/java/com/aliyun/odps/tunnel/hasher/LegacyHashFactory.java [338:351]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    public int hash(DecimalHashObject obj) {
      if (obj == null) {
        return 0;
      }
      BigDecimal val = obj.val();
      int precision = obj.precision();
      int scale = obj.scale();
      BigInteger bi = castBigDecimal2BigInteger(val.toString(), precision, scale);
      if (isDecimal128(precision)) {
        // Reference to task/sql_task/execution_engine/ir/hash_ir.cpp:HashInt1284Row
        return basicLongHasher(bi.longValue()) + basicLongHasher(bi.shiftRight(64).longValue());
      }
      return basicLongHasher(bi.longValue());
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



