Fix VectorMemoryIndex#update logic to compare vectors

Fix Index view

patch by Ekaterina Dimitrova; reviewed by Andres de la Pena for CASSANDRA-19168
This commit is contained in:
Ekaterina Dimitrova 2024-02-09 13:09:39 -05:00
parent 2482c8a936
commit 53cd2d8286
4 changed files with 10 additions and 12 deletions

View File

@ -1,4 +1,5 @@
5.0-beta2
* Fix VectorMemoryIndex#update logic to compare vectors. Fix Index view (CASSANDRA-19168)
* Deprecate native_transport_port_ssl (CASSANDRA-19392)
* Update packaging shell includes (CASSANDRA-19283)
* Fix data corruption in VectorCodec when using heap buffers (CASSANDRA-19167)

View File

@ -29,7 +29,6 @@ import java.util.concurrent.ConcurrentSkipListSet;
import java.util.concurrent.atomic.LongAdder;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javax.annotation.Nullable;
import io.github.jbellis.jvector.util.Bits;
@ -111,7 +110,7 @@ public class VectorMemoryIndex extends MemoryIndex
}
else
{
different = IntStream.range(0, oldRemaining).anyMatch(i -> oldValue.get(i) != newValue.get(i));
different = index.termType().compare(oldValue, newValue) != 0;
}
long bytesUsed = 0;

View File

@ -73,14 +73,8 @@ public class RangeTermTree
public final void add(SSTableIndex index)
{
addIndex(index);
assert !indexTermType.isVector();
min = min == null || index.getIndexTermType().compare(min, index.minTerm()) > 0 ? index.minTerm() : min;
max = max == null || index.getIndexTermType().compare(max, index.maxTerm()) < 0 ? index.maxTerm() : max;
}
public void addIndex(SSTableIndex index)
{
Interval<Term, SSTableIndex> interval =
Interval.create(new Term(index.minTerm(), indexTermType), new Term(index.maxTerm(), indexTermType), index);
@ -88,11 +82,14 @@ public class RangeTermTree
{
logger.trace(index.getIndexIdentifier().logMessage("Adding index for SSTable {} with minTerm={} and maxTerm={}..."),
index.getSSTable().descriptor,
indexTermType.indexType().compose(index.minTerm()),
indexTermType.indexType().compose(index.maxTerm()));
index.minTerm() != null ? indexTermType.indexType().compose(index.minTerm()) : null,
index.maxTerm() != null ? indexTermType.indexType().compose(index.maxTerm()) : null);
}
intervals.add(interval);
min = min == null || index.getIndexTermType().compare(min, index.minTerm()) > 0 ? index.minTerm() : min;
max = max == null || index.getIndexTermType().compare(max, index.maxTerm()) < 0 ? index.maxTerm() : max;
}
public RangeTermTree build()

View File

@ -52,7 +52,8 @@ public class View implements Iterable<SSTableIndex>
for (SSTableIndex sstableIndex : indexes)
{
this.view.put(sstableIndex.getSSTable().descriptor, sstableIndex);
rangeTermTreeBuilder.add(sstableIndex);
if (!indexTermType.isVector())
rangeTermTreeBuilder.add(sstableIndex);
}
this.rangeTermTree = rangeTermTreeBuilder.build();