[ 
https://issues.apache.org/jira/browse/IGNITE-21745?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Tupitsyn updated IGNITE-21745:
------------------------------------
    Description: 
* While we have varint logic for short/int/long, we don't have it for 
BigDecimal.
* MAX_DECIMAL_SCALE = Short.MAX_VALUE (CatalogUtils)

As a result, we can waste multiple kilobytes to store a very simple value.

{code:java}
        BigDecimal value = new BigDecimal(1);

        BinaryTupleBuilder builder = new BinaryTupleBuilder(1);
        ByteBuffer bytes = builder.appendDecimal(value, 
Short.MAX_VALUE).build();

        assertEquals(13610, bytes.limit());
{code}

> BinaryTuple stores BigDecimal inefficiently
> -------------------------------------------
>
>                 Key: IGNITE-21745
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21745
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 3.0.0-beta1
>            Reporter: Pavel Tupitsyn
>            Assignee: Pavel Tupitsyn
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>
> * While we have varint logic for short/int/long, we don't have it for 
> BigDecimal.
> * MAX_DECIMAL_SCALE = Short.MAX_VALUE (CatalogUtils)
> As a result, we can waste multiple kilobytes to store a very simple value.
> {code:java}
>         BigDecimal value = new BigDecimal(1);
>         BinaryTupleBuilder builder = new BinaryTupleBuilder(1);
>         ByteBuffer bytes = builder.appendDecimal(value, 
> Short.MAX_VALUE).build();
>         assertEquals(13610, bytes.limit());
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to