You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladislav Pyatkov (Jira)" <ji...@apache.org> on 2022/11/30 15:13:00 UTC

[jira] [Updated] (IGNITE-18299) Value comparison in table operations

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

Vladislav Pyatkov updated IGNITE-18299:
---------------------------------------
    Labels: ignite-3  (was: )

> Value comparison in table operations
> ------------------------------------
>
>                 Key: IGNITE-18299
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18299
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>
> *Motivation:*
> InternalTable has two operations that requires to check a stored value with a provided one. The operations are deleteExact and replace (the variant with an old value).
> Currently, we are checking equality just after extract a binary row from storage according to the method:
> {code}
> private boolean equalValues(@NotNull BinaryRow row, @NotNull BinaryRow row2) {
>     if (row.hasValue() ^ row2.hasValue()) {
>         return false;
>     }
>     return row.valueSlice().compareTo(row2.valueSlice()) == 0;
> }
> {code} 
> This approach does not work even for really same rows, because there are different implementation of BinaryRow here. Moreover, there is no bother about different schemas of the rows.
> *Definition of Done:*
> 1) Necessary, ensure that the schema of requested row is greater or equals with the schema of row got from a storage.
> 2) Then upgrade the row from storage, in order to both rows become in the same versions (the same implementation for both rows is also here - row with schema).
> 3) Only after these two steps we ready to compare the rows withing the method above. 



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