[ https://issues.apache.org/jira/browse/IGNITE-18882?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Semyon Danilov updated IGNITE-18882: ------------------------------------ Description: This test in AbstractMvPartitionStorageGcTest should pass {code:java} void testTombstoneFirst() { addAndCommit(null); addAndCommit(TABLE_ROW); addAndCommit(TABLE_ROW2); BinaryRowAndRowId row = pollForVacuum(HybridTimestamp.MAX_VALUE); assertRowMatches(row.binaryRow(), TABLE_ROW); } {code} At this moment, storages will store the tombstone if it is the first committed value which disrupts the GC flow. addWrite with null argument as a first version of row is valid, for example: {code:sql} CREATE TABLE test ( id INT ); BEGIN; INSERT INTO test VALUES(1); DELETE from test where id = 1; COMMIT; {code} is ok, but tombstone should not be stored (so the operation should be no-op) was: This test in AbstractMvPartitionStorageGcTest should pass {code:java} void testTombstoneFirst() { addAndCommit(null); addAndCommit(TABLE_ROW); addAndCommit(TABLE_ROW2); BinaryRowAndRowId row = pollForVacuum(HybridTimestamp.MAX_VALUE); assertRowMatches(row.binaryRow(), TABLE_ROW); } {code} At this moment, storages will store the tombstone if it is the first committed value which disrupts the GC flow. addWrite with null argument as a first version of row is valid, for example: {code:sql} CREATE TABLE test (id INT); DELETE from test where id = 0; {code} is ok, but tombstone should not be stored (so the operation should be no-op) > Fix tombstone is stored if it is the first entry of version chain > ----------------------------------------------------------------- > > Key: IGNITE-18882 > URL: https://issues.apache.org/jira/browse/IGNITE-18882 > Project: Ignite > Issue Type: Bug > Reporter: Semyon Danilov > Priority: Major > Labels: ignite-3 > Fix For: 3.0.0-beta2 > > > This test in AbstractMvPartitionStorageGcTest should pass > {code:java} > void testTombstoneFirst() { > addAndCommit(null); > addAndCommit(TABLE_ROW); > addAndCommit(TABLE_ROW2); > BinaryRowAndRowId row = pollForVacuum(HybridTimestamp.MAX_VALUE); > assertRowMatches(row.binaryRow(), TABLE_ROW); > } > {code} > At this moment, storages will store the tombstone if it is the first > committed value which disrupts the GC flow. > addWrite with null argument as a first version of row is valid, for example: > {code:sql} > CREATE TABLE test ( > id INT > ); > BEGIN; > INSERT INTO test VALUES(1); > DELETE from test where id = 1; > COMMIT; > {code} > is ok, but tombstone should not be stored (so the operation should be no-op) -- This message was sent by Atlassian Jira (v8.20.10#820010)