You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/01/27 14:41:24 UTC

[jira] [Commented] (IGNITE-3196) Marshaling works wrong for the BigDecimals that have negative scale

    [ https://issues.apache.org/jira/browse/IGNITE-3196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15842927#comment-15842927 ] 

ASF GitHub Bot commented on IGNITE-3196:
----------------------------------------

GitHub user daradurvs opened a pull request:

    https://github.com/apache/ignite/pull/1473

    IGNITE-3196

    We shouldn't check sign at serialization, because the used approach:
    BigInteger intVal = val.unscaledValue();
    byte[] vals = intVal.toByteArray();
    #toByteArray() - already including at least one sign bit, which is (ceil((this.bitLength() + 1)/8)). (This representation is compatible with the (byte[]) constructor.)
    
    Therefore, at deserialization we just read  byte[] vals and scale, also we use default constructor which will define a sign from byte[] vals.


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/daradurvs/ignite ignite-3196

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ignite/pull/1473.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1473
    
----
commit 48fab04f4a8b48a1f6ff0a632d56075c855b62e5
Author: daradurvs <da...@gmail.com>
Date:   2017-01-26T17:21:01Z

    ignite-3196: serialization of BigDecimal is simplified

commit 91327c3797fb1ea8702cf8e2ce34998819c0c8c9
Author: daradurvs <da...@gmail.com>
Date:   2017-01-27T09:50:32Z

    ignite-3196: fix old serialization method (it is better, serialized object has the smaller size)

commit f3d2297d9db4e773003eeea800ae37843ce79f14
Author: daradurvs <da...@gmail.com>
Date:   2017-01-27T11:48:53Z

    ignite-3196: "negative scale with RoundingMode" tests are added

----


> Marshaling works wrong for the BigDecimals that have negative scale
> -------------------------------------------------------------------
>
>                 Key: IGNITE-3196
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3196
>             Project: Ignite
>          Issue Type: Bug
>          Components: binary
>    Affects Versions: 1.6
>            Reporter: Igor Sapego
>            Assignee: Vyacheslav Daradur
>             Fix For: 2.0
>
>
> Current marshalling procedure of the {{BigDecimal}} assumes that the scale of the {{BigDecimal}} value is always more than or equal to zero. However, scale [can be negative|https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#scale()].
> This leads to invalid results if we try to marshal-unmarshal {{BigDecimal}} that has a negative scale.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)