Vladislav Pyatkov created IGNITE-18299:
------------------------------------------
Summary: 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
*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)