This is an automated email from the ASF dual-hosted git repository. mck pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git
from f8c240147c Merge branch 'cassandra-5.0' into trunk new 949b760f55 Add support for a vector search index in SAI new a8d0584936 Merge branch 'cassandra-5.0' into trunk The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .build/cassandra-deps-template.xml | 4 + .build/parent-pom-template.xml | 5 + CHANGES.txt | 1 + src/antlr/Lexer.g | 3 +- src/antlr/Parser.g | 15 +- .../config/CassandraRelevantProperties.java | 17 +- src/java/org/apache/cassandra/cql3/Operator.java | 17 + src/java/org/apache/cassandra/cql3/Ordering.java | 180 ++ .../org/apache/cassandra/cql3/QueryOptions.java | 44 + src/java/org/apache/cassandra/cql3/Relation.java | 2 + .../apache/cassandra/cql3/UntypedResultSet.java | 7 + .../cassandra/cql3/functions/VectorFcts.java | 6 +- .../cql3/restrictions/MultiColumnRestriction.java | 18 + .../cassandra/cql3/restrictions/Restriction.java | 15 + .../cql3/restrictions/RestrictionSet.java | 39 +- .../cql3/restrictions/RestrictionSetWrapper.java | 12 + .../cql3/restrictions/SingleColumnRestriction.java | 85 + .../cql3/restrictions/SingleRestriction.java | 5 + .../cql3/restrictions/StatementRestrictions.java | 111 +- .../cassandra/cql3/restrictions/TokenFilter.java | 12 + .../cql3/restrictions/TokenRestriction.java | 12 + .../cassandra/cql3/statements/DeleteStatement.java | 4 +- .../cql3/statements/ModificationStatement.java | 5 +- .../cassandra/cql3/statements/SelectStatement.java | 262 +- .../cassandra/cql3/statements/UpdateStatement.java | 5 +- .../statements/schema/CreateViewStatement.java | 1 + .../org/apache/cassandra/db/ColumnFamilyStore.java | 10 +- .../cassandra/db/PartitionRangeReadCommand.java | 2 +- src/java/org/apache/cassandra/db/ReadCommand.java | 6 + .../cassandra/db/ReadCommandVerbHandler.java | 3 + .../cassandra/db/ReadExecutionController.java | 5 + src/java/org/apache/cassandra/db/ReadQuery.java | 11 + .../org/apache/cassandra/db/filter/RowFilter.java | 5 +- .../cassandra/db/marshal/ByteArrayAccessor.java | 13 + .../cassandra/db/marshal/ByteBufferAccessor.java | 13 + .../apache/cassandra/db/marshal/ValueAccessor.java | 3 + .../apache/cassandra/db/marshal/VectorType.java | 10 +- src/java/org/apache/cassandra/db/view/View.java | 2 +- src/java/org/apache/cassandra/index/Index.java | 28 +- .../apache/cassandra/index/sai/IndexContext.java | 22 + .../apache/cassandra/index/sai/QueryContext.java | 9 + .../cassandra/index/sai/StorageAttachedIndex.java | 101 +- .../cassandra/index/sai/VectorQueryContext.java | 194 ++ .../index/sai/disk/IndexSearchResultIterator.java | 26 +- .../cassandra/index/sai/disk/PrimaryKeyMap.java | 19 + .../cassandra/index/sai/disk/RowMapping.java | 33 + .../cassandra/index/sai/disk/SSTableIndex.java | 3 +- ...ator.java => SSTableRowIdKeyRangeIterator.java} | 79 +- .../index/sai/disk/format/IndexComponent.java | 5 + .../cassandra/index/sai/disk/format/Version.java | 2 +- .../index/sai/disk/io/IndexFileUtils.java | 11 + .../index/sai/disk/v1/IndexWriterConfig.java | 196 ++ .../index/sai/disk/v1/MemtableIndexWriter.java | 74 +- .../index/sai/disk/v1/PerColumnIndexFiles.java | 17 +- .../index/sai/disk/v1/SSTableIndexWriter.java | 21 +- .../index/sai/disk/v1/SkinnyPrimaryKeyMap.java | 24 +- .../index/sai/disk/v1/V1OnDiskFormat.java | 9 +- .../index/sai/disk/v1/V1SSTableIndex.java | 14 +- .../index/sai/disk/v1/WidePrimaryKeyMap.java | 15 +- .../disk/v1/bitpack/AbstractBlockPackedReader.java | 10 +- .../sai/disk/v1/postings/MergePostingList.java | 30 +- .../disk/v1/postings/PostingListRangeIterator.java | 24 +- .../index/sai/disk/v1/postings/PostingsReader.java | 20 +- .../index/sai/disk/v1/postings/PostingsWriter.java | 4 - .../sai/disk/v1/postings/VectorPostingList.java | 75 + .../sai/disk/v1/segment/IndexSegmentSearcher.java | 21 +- .../v1/segment/IndexSegmentSearcherContext.java | 2 - .../v1/segment/LiteralIndexSegmentSearcher.java | 10 +- .../v1/segment/NumericIndexSegmentSearcher.java | 8 +- .../index/sai/disk/v1/segment/Segment.java | 14 +- .../index/sai/disk/v1/segment/SegmentBuilder.java | 31 + .../index/sai/disk/v1/segment/SegmentMetadata.java | 5 + .../index/sai/disk/v1/segment/SegmentOrdering.java | 58 + .../v1/segment/VectorIndexSegmentSearcher.java | 363 +++ .../disk/v1/trie/TrieTermsDictionaryReader.java | 2 +- .../index/sai/disk/v1/vector/BitsUtil.java | 122 + .../sai/disk/v1/vector/CheckpointingIterator.java | 101 + .../sai/disk/v1/vector/CompactionVectorValues.java | 101 + .../sai/disk/v1/vector/ConcurrentVectorValues.java | 75 + .../index/sai/disk/v1/vector/DiskAnn.java | 182 ++ .../index/sai/disk/v1/vector/DiskBinarySearch.java | 55 + .../sai/disk/v1/vector/OnDiskOrdinalsMap.java | 171 ++ .../index/sai/disk/v1/vector/OnHeapGraph.java | 385 +++ .../index/sai/disk/v1/vector/OptimizeFor.java | 52 + .../sai/disk/v1/vector/RamAwareVectorValues.java | 26 + .../index/sai/disk/v1/vector/RamEstimation.java | 53 + .../disk/v1/vector/RandomAccessReaderAdapter.java | 127 + .../index/sai/disk/v1/vector/VectorPostings.java | 150 + .../sai/disk/v1/vector/VectorPostingsWriter.java | 111 + .../index/sai/iterators/KeyRangeIterator.java | 7 + .../index/sai/iterators/KeyRangeListIterator.java | 67 + .../sai/iterators/KeyRangeOrderingIterator.java | 92 + .../cassandra/index/sai/memory/MemoryIndex.java | 70 + .../cassandra/index/sai/memory/MemtableIndex.java | 37 +- .../index/sai/memory/MemtableIndexManager.java | 42 +- .../index/sai/memory/MemtableOrdering.java | 42 + .../index/sai/memory/TrieMemoryIndex.java | 43 +- .../index/sai/memory/VectorMemoryIndex.java | 376 +++ .../cassandra/index/sai/plan/Expression.java | 17 +- .../cassandra/index/sai/plan/FilterTree.java | 2 +- .../apache/cassandra/index/sai/plan/Operation.java | 14 +- .../cassandra/index/sai/plan/QueryController.java | 183 +- .../cassandra/index/sai/plan/QueryViewBuilder.java | 61 +- .../sai/plan/StorageAttachedIndexQueryPlan.java | 23 + .../sai/plan/StorageAttachedIndexSearcher.java | 45 +- .../index/sai/plan/VectorTopKProcessor.java | 193 ++ .../index/sai/postings/IntArrayPostingList.java | 84 + .../index/sai/postings/PeekablePostingList.java | 12 + .../cassandra/index/sai/postings/PostingList.java | 33 + .../index/sai/postings/RangePostingList.java | 88 + .../cassandra/index/sai/utils/AtomicRatio.java | 65 + .../index/sai/utils/InMemoryPartitionIterator.java | 122 + .../utils/InMemoryUnfilteredPartitionIterator.java | 142 + .../cassandra/index/sai/utils/PartitionInfo.java | 86 + .../cassandra/index/sai/utils/RangeUtil.java | 34 + .../apache/cassandra/index/sai/utils/TypeUtil.java | 25 +- .../cassandra/index/sai/view/IndexViewManager.java | 6 +- .../org/apache/cassandra/index/sai/view/View.java | 6 +- .../apache/cassandra/io/util/MmappedRegions.java | 19 + .../cassandra/io/util/RandomAccessReader.java | 4 +- .../org/apache/cassandra/io/util/Rebufferer.java | 12 + .../apache/cassandra/locator/ReplicaLayout.java | 2 +- .../org/apache/cassandra/locator/ReplicaPlan.java | 20 + .../org/apache/cassandra/locator/ReplicaPlans.java | 24 + .../service/pager/AggregationQueryPager.java | 6 + .../service/pager/PartitionRangeQueryPager.java | 6 + .../apache/cassandra/service/pager/QueryPager.java | 9 + .../cassandra/service/reads/DataResolver.java | 39 +- .../service/reads/range/RangeCommandIterator.java | 16 +- .../service/reads/range/RangeCommands.java | 3 + .../reads/range/ScanAllRangesCommandIterator.java | 114 + .../org/apache/cassandra/utils/ByteBufferUtil.java | 5 + test/data/siftsmall/siftsmall_base.fvecs | Bin 0 -> 5160000 bytes test/data/siftsmall/siftsmall_groundtruth.ivecs | Bin 0 -> 40400 bytes test/data/siftsmall/siftsmall_learn.fvecs | Bin 0 -> 12900000 bytes test/data/siftsmall/siftsmall_query.fvecs | Bin 0 -> 51600 bytes .../distributed/fuzz/SSTableGenerator.java | 2 + .../test/sai/VectorDistributedTest.java | 442 +++ .../distributed/test/sai/VectorValidationTest.java | 48 + test/resources/glove.3K.50d.txt | 3000 ++++++++++++++++++++ .../batchlog/BatchlogEndpointFilterTest.java | 8 + test/unit/org/apache/cassandra/cql3/CQLTester.java | 10 + .../cassandra/cql3/functions/VectorFctsTest.java | 10 +- .../cassandra/index/sai/cql/ComplexQueryTest.java | 68 + .../index/sai/cql/VectorInvalidQueryTest.java | 391 +++ .../cassandra/index/sai/cql/VectorLocalTest.java | 603 ++++ .../index/sai/cql/VectorSegmentationTest.java | 133 + .../index/sai/cql/VectorSiftSmallTest.java | 158 ++ .../cassandra/index/sai/cql/VectorTester.java | 119 + .../cassandra/index/sai/cql/VectorTypeTest.java | 660 +++++ .../index/sai/cql/VectorUpdateDeleteTest.java | 561 ++++ .../sai/disk/v1/BalancedTreeIndexSearcherTest.java | 10 +- .../sai/disk/v1/InvertedIndexSearcherTest.java | 25 +- .../v1/bbtree/BlockBalancedTreeIndexBuilder.java | 13 + .../index/sai/iterators/LongIterator.java | 2 +- .../index/sai/memory/TrieMemoryIndexTest.java | 2 +- .../index/sai/memory/VectorMemoryIndexTest.java | 244 ++ .../apache/cassandra/index/sai/utils/Glove.java | 120 + .../org/apache/cassandra/inject/Injection.java | 2 +- .../org/apache/cassandra/tracing/TracingTest.java | 74 +- .../apache/cassandra/tracing/TracingTestImpl.java | 101 + .../cassandra/utils/AbstractTypeGenerators.java | 2 +- 162 files changed, 12902 insertions(+), 462 deletions(-) create mode 100644 src/java/org/apache/cassandra/cql3/Ordering.java create mode 100644 src/java/org/apache/cassandra/index/sai/VectorQueryContext.java copy src/java/org/apache/cassandra/index/sai/disk/{v1/postings/PostingListRangeIterator.java => SSTableRowIdKeyRangeIterator.java} (60%) create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/IndexWriterConfig.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/postings/VectorPostingList.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/segment/SegmentOrdering.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/segment/VectorIndexSegmentSearcher.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/BitsUtil.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/CheckpointingIterator.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/CompactionVectorValues.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/ConcurrentVectorValues.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/DiskAnn.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/DiskBinarySearch.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/OnDiskOrdinalsMap.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/OnHeapGraph.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/OptimizeFor.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/RamAwareVectorValues.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/RamEstimation.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/RandomAccessReaderAdapter.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/VectorPostings.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/vector/VectorPostingsWriter.java create mode 100644 src/java/org/apache/cassandra/index/sai/iterators/KeyRangeListIterator.java create mode 100644 src/java/org/apache/cassandra/index/sai/iterators/KeyRangeOrderingIterator.java create mode 100644 src/java/org/apache/cassandra/index/sai/memory/MemoryIndex.java create mode 100644 src/java/org/apache/cassandra/index/sai/memory/MemtableOrdering.java create mode 100644 src/java/org/apache/cassandra/index/sai/memory/VectorMemoryIndex.java create mode 100644 src/java/org/apache/cassandra/index/sai/plan/VectorTopKProcessor.java create mode 100644 src/java/org/apache/cassandra/index/sai/postings/IntArrayPostingList.java create mode 100644 src/java/org/apache/cassandra/index/sai/postings/RangePostingList.java create mode 100644 src/java/org/apache/cassandra/index/sai/utils/AtomicRatio.java create mode 100644 src/java/org/apache/cassandra/index/sai/utils/InMemoryPartitionIterator.java create mode 100644 src/java/org/apache/cassandra/index/sai/utils/InMemoryUnfilteredPartitionIterator.java create mode 100644 src/java/org/apache/cassandra/index/sai/utils/PartitionInfo.java create mode 100644 src/java/org/apache/cassandra/index/sai/utils/RangeUtil.java create mode 100644 src/java/org/apache/cassandra/service/reads/range/ScanAllRangesCommandIterator.java create mode 100644 test/data/siftsmall/siftsmall_base.fvecs create mode 100644 test/data/siftsmall/siftsmall_groundtruth.ivecs create mode 100644 test/data/siftsmall/siftsmall_learn.fvecs create mode 100644 test/data/siftsmall/siftsmall_query.fvecs create mode 100644 test/distributed/org/apache/cassandra/distributed/test/sai/VectorDistributedTest.java create mode 100644 test/distributed/org/apache/cassandra/distributed/test/sai/VectorValidationTest.java create mode 100644 test/resources/glove.3K.50d.txt create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/ComplexQueryTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/VectorInvalidQueryTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/VectorLocalTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/VectorSegmentationTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/VectorSiftSmallTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/VectorTester.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/VectorTypeTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/VectorUpdateDeleteTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/memory/VectorMemoryIndexTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/utils/Glove.java create mode 100644 test/unit/org/apache/cassandra/tracing/TracingTestImpl.java --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org