mirror of https://github.com/apache/cassandra
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:
parent
2482c8a936
commit
53cd2d8286
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue