Skip to content

Commit 9cabec5

Browse files
Squashed commit of the following:
commit 4c4c1ff802c7667e1289a4e730cc34bf6b3bd007 Author: Jonathan Ellis <[email protected]> Date: Wed Jul 5 12:03:22 2023 -0500 add test for creating index after data is added commit 0acaae364c19ed7556b66b5576762ecc131af5fd Author: Jeremiah D Jordan <[email protected]> Date: Wed Jul 5 09:23:01 2023 -0500 Revert "enable segment compaction by default for vector indexes -- we should prioritize read performance" This reverts commit a4fa0728337ebf236ad03f6ad708cf51c3dc08c5. commit e3ddb6426de4e89b5fe61ed742b69257865c2d3c Author: Jonathan Ellis <[email protected]> Date: Wed Jun 28 10:54:49 2023 -0500 VECTOR-64 set sstable_growth to 0.5 by default commit 3ca75046e6802ce5836a654459b01948c83d1d7b Merge: a4fa072833 10a2a31ae8 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 28 10:54:18 2023 -0500 merge ds-trunk commit a4fa0728337ebf236ad03f6ad708cf51c3dc08c5 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 28 10:24:41 2023 -0500 enable segment compaction by default for vector indexes -- we should prioritize read performance commit 08153b38549d700505d064c25d7a2070c2ff07aa Merge: 6a063b4f84 1a45fdc5f9 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 28 10:18:38 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit 6a063b4f8458f119d4b99bd6b78cbc8832f27f13 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 28 10:13:51 2023 -0500 VECTOR-63 add cassandra.sai.hnsw.allow_custom_parameters defaulting to false to control setting maximum_node_connections and construction_beam_width, which can cause memory usage to explode if used incorrectly commit 1a45fdc5f92e9c82dba6e9e56a5e341806070b13 Author: Jeremiah D Jordan <[email protected]> Date: Mon Jun 26 15:57:10 2023 -0500 Add the option to configure the file_cache_size_in_mb in a -D like it is in 6.8-cndb. commit d2e45dab5b57f20fbdd6250d6dc186c83d783ed3 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 22 16:13:00 2023 -0500 VECTOR-62 don't flush a graph that only contains deleted vectors commit 4a9afe205c20b1f863e89d4e02138557d225c3fc Author: Jonathan Ellis <[email protected]> Date: Thu Jun 22 16:11:11 2023 -0500 r/m obsolete comment commit a925dc22696bcbebcad17a460441e8b84ff97660 Merge: 7c7d160dd9 2b22984fe1 Author: Jeremiah D Jordan <[email protected]> Date: Thu Jun 22 09:03:08 2023 -0500 Merge remote-tracking branch 'datastax/ds-trunk' into vsearch commit 7c7d160dd90624b0e365287ef0a2f0b7ef94da53 Merge: a14b387372 7a5e374cea Author: Jonathan Ellis <[email protected]> Date: Tue Jun 20 21:42:51 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit a14b387372ef3f220ece68b019acaafaf0d56f42 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 20 17:52:13 2023 -0500 move new options to jvm17-server.options commit dc67582585a90628e026a693497793b7d8a298ed Author: Jonathan Ellis <[email protected]> Date: Tue Jun 20 17:47:27 2023 -0500 copy jvm11 options to jvm17 commit b6717410f925486a858c4c9414e417eed50950d7 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 20 17:30:48 2023 -0500 enable simd commit 92b9e6e2f136254fb1f8e50732809ea529617f48 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 19 15:31:09 2023 -0500 make it run under jdk 20 commit 3e985953637819ac8504955552ce0feba29bdd40 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 20 17:13:56 2023 -0500 update to lucene with simd commit 7a5e374cea785678670444121ad36be6170dd59b Merge: 5e5ae4de82 e9ddd5f0d9 Author: Jeremiah D Jordan <[email protected]> Date: Tue Jun 20 15:00:24 2023 -0500 Merge remote-tracking branch 'datastax/ds-trunk' into vsearch commit 5e5ae4de824a7e838bbdfdbabc92e8b256911e3f Author: Jonathan Ellis <[email protected]> Date: Mon Jun 19 10:57:18 2023 -0500 we weren't calculating length correctly (supposed to match ordinals range) but it didn't matter b/c length() is not called on the search path where these classes are used. make this explicit by throwing in length implementation. commit c0d4055a0bc6914d0220fbd4912d6355e9f6a1d9 Merge: f2c9a7cb59 c605f8c9f0 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 19 10:20:02 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit f2c9a7cb59b113a349992011b739079106274c1e Author: Jonathan Ellis <[email protected]> Date: Mon Jun 19 10:19:34 2023 -0500 VECTOR-61 remove deletedOrdinals collection that was not threadsafe wrt add and remove operations; create postingsByOrdinal map that allows Bits operations to look up the postings, instead commit 9744a13b405cbeb1b68894bb08cc24796aedd8f7 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 19 09:13:24 2023 -0500 add LVT.testMultiplePostings (works fine) commit c605f8c9f037e724544b21fe2aadcf0d8503d86f Author: Zhao Yang <[email protected]> Date: Sat Jun 17 12:44:36 2023 +0800 skip replica-filtering-protection for ANN requests commit 71935bd07c9218ba70f1ffde7b6db1e88009e529 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 20:20:06 2023 -0500 forgot that maxBruteForceRows has to stay non-final for Byteman commit b264afc07727305ce88ab2f18b8a2643d2510bd3 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 20:10:19 2023 -0500 VECTOR-54 - validateIndexable also checks for very large vectors (that explode to NaN when we take the cosine) - check query vectors with the same criteria as vectors to index commit 66c31a6dcfcbf81b7657ac9c4119803e026d150a Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 20:07:41 2023 -0500 if CFS.apply catches an InvalidRequestException, keep the same type when we re-throw so it gets back to the client as intended commit e0bdfdbe421a1cca30746604cda9ef5b992002bb Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 17:33:37 2023 -0500 add [failing] emptyIndexTest commit 75cba96f90730b32ea4a39375c72aaff4ffd6221 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 15 16:52:46 2023 -0500 re-use bitsets across searches commit 2af2ce8a321f7fea268d81c393da7f8f6d886776 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 17:05:52 2023 -0500 more asserts that graph is in sane state when we write it commit a63492686d13e12b799acdf50c6f0c20dd680f21 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 17:13:23 2023 -0500 update lucene commit 4c6b43e3606b8c9eb5e4ec4cf0817dc9b061c555 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 16:24:33 2023 -0500 add debugging information when node is not found on level commit 81c8e730bd4ca314a81bc13e30b197603a8eb005 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 16 11:57:24 2023 -0500 add similarityWithAnn test commit 87c8da9a5dddd10215a84c07a09dbaaecaa522b8 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 14 18:26:02 2023 -0500 add tests to confirm that zero-length vectors are rejected commit 2510c1b987d846821e7095fbc2c368fa51d9a15d Merge: a3d9e33554 e86f91c568 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 12 17:09:22 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit a3d9e3355470f6400328cd7ac1eb07ff06f8e00b Author: Jonathan Ellis <[email protected]> Date: Mon Jun 12 17:08:43 2023 -0500 use ArrayList in CVV instead of HashMap since we know the keys are consecutive commit e86f91c568f8a82e83e61bd0dd768478a7584cfc Merge: 77c1bc11f3 8a7a6d9c4f Author: Jeremiah D Jordan <[email protected]> Date: Mon Jun 12 09:25:06 2023 -0500 Merge remote-tracking branch 'datastax/ds-trunk' into vsearch commit 77c1bc11f31e4ff001c7eff1e6fe50812e136a45 Author: Jeremiah D Jordan <[email protected]> Date: Mon Jun 12 09:24:56 2023 -0500 Revert "Revert this after CNDB-6974 is fixed." This reverts commit 8e04280312583a18085e7e7b9d31810790b039f4. commit cae30e9879c463d80de2a2b7e4a642979803c13a Author: Jeremiah D Jordan <[email protected]> Date: Mon Jun 12 09:23:39 2023 -0500 Revert "Revert this after CNDB-6974 is fixed." This reverts commit 67a2b7eba3c957a993726d37706643979e92a3a3. commit 46d1a45de84f40311f193beba3ca5fc3fe7450d7 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 12 09:03:03 2023 -0500 replace our TODO entries with VSTODO to make them easier to find commit 415b3f29e8e7f1526e28655308a1937a1175e575 Merge: 2fd8b848be 481d29721a Author: Jonathan Ellis <[email protected]> Date: Mon Jun 12 09:02:16 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit 481d29721a7993e9babd44f792be55aca925d41a Author: Zhao Yang <[email protected]> Date: Mon Jun 12 21:26:43 2023 +0800 Fix VectorMemtableIndex to handle max token and fix Segment#intersects (#670) * Fix VectorMemtableIndex to handle max token and min/max bound * Fix Segment#intersects to compare bound instead of token and add tests for range search * make brute force rows per query for VectorMemtableIndex * apply feedback on Segment#intersects * add comments to VectorMemtableIndex#search * Fix SegmentTest commit 2fd8b848be82e62999e64b57cb9800d03de8e953 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 12 07:51:18 2023 -0500 clean up a couple REVIEWME commit 3c066e07be6188c3f48c51c02cfc99b395e2a6bc Author: Zhao Yang <[email protected]> Date: Sun Jun 11 14:26:42 2023 +0800 fix flaky VectorDistributedTest commit 6c719a752e90e031916dddf6cc7b7db23627bc38 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 10:48:01 2023 -0500 fix use of bruteForceRows -- should be larger of limit,maxBruteForceRows commit 0a2279d7f010bcb68053bb14ea2974295b21d1c4 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 10:46:34 2023 -0500 use maxBruteForceRows when deciding whether to skip ANN commit 1859f7355231ce7972e3d4b7af70e5d2967da516 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 10:27:03 2023 -0500 simplify partitionKeySearchTest using euclidean distance commit 4f40e1c2d9b1c30675eeaee7d800a8113cce97c0 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 10:09:24 2023 -0500 typo commit 7dbe85ac9a248aa6a0985839df1f40ceb2c08e6c Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 10:08:23 2023 -0500 rename methods that return Bits but had bitset in their names commit 2861bfdba8f2638a1e3f9e81df9cad3878d0e544 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 10:06:51 2023 -0500 simplify skipANN commit fbfe4bcdd03a66f4dedfa91ce9d06206f89827cd Author: Zhao Yang <[email protected]> Date: Sat Jun 10 16:36:56 2023 +0800 optimize VectorIndexSearcher#searchPosting - return empty posting if key range is not found in current sstable - return empty posting if all row ids are shadowed - skip ANN if matching row ids are less than limit commit 168911b70888a3dda0ddf4f615af1b7ff54f43e3 Author: Zhao Yang <[email protected]> Date: Sat Jun 10 20:54:41 2023 +0800 fix data visibility issue during flush: make sure SSTableAddedNotification is sent before MemtableDiscardedNotification commit c5dd47e3ce1c7276703fa3f89a9932a3b2cd43b7 Author: Zhao Yang <[email protected]> Date: Sat Jun 10 12:31:53 2023 +0800 fix primaryKeySearchTest and partitionKeySearchTest to use correct selector and expected results commit 2e636529c63d0d726868d6df9b3e11d15d3871d8 Author: Zhao Yang <[email protected]> Date: Sun Jun 11 08:31:39 2023 +0800 Vector-48: index#update is not triggered by partition/range deletion,… (#665) * Vector-48: index#update is not triggered by partition/range deletion, we have to fix VectorMemtableIndex to include shadowed primary keys - during flush, append ordinals that are removed by partition/range deletion into deletedOrdinals set * add comments to VP * revert redundant variables * simplify --------- Co-authored-by: Jonathan Ellis <[email protected]> commit daa2623b880e4b82d99204fe718db22e52ae3b42 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 13:54:38 2023 -0500 use mmapped builder in OnDiskHnswGraphTest commit 553778a22cfa8757daf3b3ec0e2cfa6fc7ba29cf Author: Jonathan Ellis <[email protected]> Date: Sat Jun 10 08:34:41 2023 -0500 fix logic in partitionKeySearchTest, test still fails commit a7f5a2f824085691da80ef62e37a430e5637c31c Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 17:57:34 2023 -0500 ignore invalid vectors during build against existing data, instead of failing the build commit 2af203646a2e57fca0a2521c31ba4269b0d8f326 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 17:43:47 2023 -0500 switch from ignoring zero vectors to throwing IRE commit 4c98fbb447a275cbf557ae0adf8f4f8a30fba17f Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 17:15:57 2023 -0500 Revert "if there are no rows in the range to search, return EmptyPostingsList instead of giving the hnsw search an empty Bits (which is a pathological case for the search)" This reverts commit 6e5eab787a3add985dc30eca82c5dee2646f5564. commit da99598a5d11dfa4ecac3b1eeeb9d19a4bad21e5 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 17:09:30 2023 -0500 don't attempt to add zero vector to cosine indexes commit a77792447d33600f69dd0a75a280a2b6dac51389 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 16:43:34 2023 -0500 add failing partitionKeySearchTest commit b061dd1c77f30c67324da4f94ea8b5a22d50fba7 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:52:08 2023 -0500 inline the test ops commit 6e5eab787a3add985dc30eca82c5dee2646f5564 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:51:09 2023 -0500 if there are no rows in the range to search, return EmptyPostingsList instead of giving the hnsw search an empty Bits (which is a pathological case for the search) commit 518c055dfeabacf0fa0863e40bf814058f2ad981 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:28:57 2023 -0500 cleanup commit e922b03ffe5436dc1341dbe20ee7aaca9901058f Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:27:53 2023 -0500 failing tests for primary key search commit 428e4b713e25a5820d02ca790c30e9f1477c0f44 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:21:59 2023 -0500 cleanup commit 5319bcdf3b694e861509b2a9f549f39bf51cd253 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:20:02 2023 -0500 move testInvalidColumnNameWithAnn to VectorInvalidQueryTest commit d8b64845e59c0bd3658a16df21dcc75564417e3b Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:12:40 2023 -0500 upgrade lucene to reduce Integer boxing on build path commit a62356e49c0a32f61732b8525d2bb655f46dd767 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 10:11:55 2023 -0500 cleanup commit b754eb7f021d10d0ae8de83ebdf2ce2f19ce59d8 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 9 08:29:34 2023 -0500 replace CHM with NBHMLong to avoid boxing commit 53d232ad2bcddefd72b10542f703cf36728c05f5 Author: Piotr Kołaczkowski <[email protected]> Date: Fri Jun 9 12:17:46 2023 +0200 STAR-550 Handle SAI AbortedOperationException AbortedOperationException is thrown by SAI when index search hits a timeout. Now instead of allowing this exception to bubble up to the top and be eventually logged as error, we catch and swallow it in the InboundSink after creating the query response. Additionally now we also we set a proper error code (TIMEOUT) in the response, so the client has a hint on what happened. commit 5e0c5eb3c54b58002162ce3e39d0891643e1f663 Author: Matt Fleming <[email protected]> Date: Fri Jun 9 08:44:10 2023 +0100 CNDB-7037: Check that memtable exists before flushing and avoid IOOBE (#664) For offline services such as the compactor it's possible to not have live memtables. Account for this during flushing after removing indexes to avoid triggering an IndexOutOfBoundsException: Error happened while updating the schema java.lang.IndexOutOfBoundsException: Index: -1 at java.base/java.util.Collections$EmptyList.get(Collections.java:4483) at org.apache.cassandra.db.lifecycle.View.getCurrentMemtable(View.java:106) at org.apache.cassandra.db.ColumnFamilyStore.forceFlush(ColumnFamilyStore.java:1115) at org.apache.cassandra.db.SystemKeyspace.forceBlockingFlush(SystemKeyspace.java:552) at org.apache.cassandra.db.SystemKeyspace.setIndexRemoved(SystemKeyspace.java:576) at org.apache.cassandra.index.SecondaryIndexManager.markIndexRemoved(SecondaryIndexManager.java:837) at org.apache.cassandra.index.SecondaryIndexManager.removeIndex(SecondaryIndexManager.java:420) commit c241f7d41ee46c28f60d691611f32e071dac6684 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 19:19:09 2023 -0500 read neighbors using .intBuffer since we know that the HNSW searcher always reads all the neighbors commit 32f021a4f0623e57d82d70c54350eab6f0f57db7 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 18:08:30 2023 -0500 VECTOR-51 leave vectors as ByteBuffers during compaction to avoid 2x memory usage incurred by keeping them around as float[] as well commit 32d8cbbd19301228530d3d84f7a7e4120b4d4422 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 17:37:08 2023 -0500 r/m node cache from query metrics since there is nothing the operator can act on there commit 890df8e6c36c5c9e1314dbcc0a681415401120dd Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 14:15:25 2023 -0500 add more information to exception when reading row offsets goes wrong commit 5c7fe0cfed1edb10f81b134f8949dd1b5abb2781 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 13:26:17 2023 -0500 revise ordinals cache as follows: // cache full levels including neighbors up to neighborsRamBudget, starting with the top level, // but always cache all levels above the bottom two levels -- this will be ~1% of the graph. // then on L1, cache at least the offsets // L0 we do not cache since we only need one extra seek (no bsearch) to read the neighbors offset commit e131014c5cba59624e0ed9fac142abe5340e2fc0 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 13:53:10 2023 -0500 add deletes test commit 7c5a880f007535d9f03b7c7d9d3e84dcc79ef3d7 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 13:34:42 2023 -0500 must use graph.size for bitset size -- not correct to use max rowid, since deleted ordinals will not have a rowid but will still be in the graph commit 0654fbb61aec86deae69edf83fb1cf653ed7df65 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 8 08:44:28 2023 -0500 info -> debug for validatePerIndexComponents commit b289db2362b928f29b6c5c6289e09b33f0be1e88 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 18:08:18 2023 -0500 update lucene commit 347dae644b0d395014d8faf2affd48a6b2546e96 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 18:23:41 2023 -0500 undo burntest logging config change commit 87a6a84f38d0a0423acd9a0dda67d386876681b5 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 15:20:06 2023 -0500 add debug logging commit 20013bc865c7fb2c34111c98362aaf997dc724dc Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 14:50:39 2023 -0500 add a bit more information to exception when we fail in index construction from disk commit 86389ceae8188b8e427d8a528fada2f913f1f633 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 12:25:31 2023 -0500 reduce test vector count from "all of them" to 200 commit 20177a1c84ba34babc82d8c1aa4e3436321b5d9f Merge: 2e2fce09ee f2c697ac46 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 12:21:20 2023 -0500 Merge branch 'wip' into vsearch commit f2c697ac46348301260c5947ade4ebed7dee90ee Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 12:16:28 2023 -0500 multipleSegmentsMultiplePostingsTest commit 59e4a1c53e1c19a7ebba4a0834229e61f9e4d3ce Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 12:16:04 2023 -0500 cleanup commit 2e2fce09eeb5bef4780cecf7c7b5e492a810f67a Author: Zhao Yang <[email protected]> Date: Wed Jun 7 23:33:00 2023 +0800 fix OnDiskOrdinalsMap to seek to segment offset before reading (#661) commit 9502f1040229f2be6619f7e4497dc25ca5126b39 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 10:04:38 2023 -0500 fix build commit 3535444b57366fe705e0fd8c1ca095e60ed2a706 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 09:19:41 2023 -0500 add write-only workload commit a112b0965cb298f293b6e384bafc92a1d5a1fb8f Author: Zhao Yang <[email protected]> Date: Wed Jun 7 21:15:53 2023 +0800 VECTOR-44: improve in-memory partition-restricted query perf (#660) * VECTOR-44: improve in-memory partition-restricted query perf - using post-filter top-k processor instead of ANN: 14x improvement on partition-restricted query in LongVectorTest commit cf1ec3be50ddbe40ae99dfc34eea51b9fc5c2648 Author: Zhao Yang <[email protected]> Date: Wed Jun 7 21:06:37 2023 +0800 Vector-45: fix bitsetForShadowedPrimaryKeys to skip shadowed primary keys outside of current sstable/segment (#659) * VECTOR-45: fix bitsetForShadowedPrimaryKeys to skip shadowed primary keys outside of current sstable/segment * return empty iterator if results are empty instead of ReorderingRangeIterator commit 87217b4f49935fbbd13c73f4d0aadb84836696a7 Author: Jonathan Ellis <[email protected]> Date: Wed Jun 7 07:31:46 2023 -0500 don't make areL0ShardsEnabled final, it breaks mocks commit 2bb3a299df43561369544b662674872575975b7c Author: Matt Fleming <[email protected]> Date: Wed Jun 7 10:56:08 2023 +0100 VECTOR-42: Check columns exist to avoid NPE during ANN expr binding (#657) Using an non-existent column with an ANN expression triggers an NPE like so, java.lang.NullPointerException: null at org.apache.cassandra.cql3.ArrayLiteral.forReceiver(ArrayLiteral.java:43) at org.apache.cassandra.cql3.ArrayLiteral.prepare(ArrayLiteral.java:54) at org.apache.cassandra.cql3.Ordering$Raw$Ann.bind(Ordering.java:178) at org.apache.cassandra.cql3.Ordering$Raw.bind(Ordering.java:139) Use TM.getExistingColumn() which throws InvalidRequestException if the column is undefined. commit f29d4528fc43f34889e560acafa810eee1b88ba9 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 21:18:47 2023 -0500 restore query timeouts commit 6e5734e52b41ab1e355d202ad0433440828fbb75 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 19:08:52 2023 -0500 looking at performance over time in LongVectorTest commit f96af8f0b9185163a49156bdab107801d2588bf0 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 16:00:23 2023 -0500 log level = info for burn tests commit 1247cf372927cc185be5c9767a06fdd15f102dbe Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 17:48:00 2023 -0500 write the in-memory deleted ordinals to disk at the start of the postings component commit e319d71bd6b0d265f616c807dcaf4a9d9fc38aef Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 16:36:27 2023 -0500 don't allocate unnecessary objects on the happy path of no tombstones commit 6d146a8460a17d146de756aab2ccbbf2abdb967a Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 16:19:56 2023 -0500 VECTOR-23: force UCS to not shard L0 commit 79d6e177093312bc1b951d6740ad45ce8a6c5875 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 16:01:05 2023 -0500 mark AutoCloseable commit 5ec2f7d7f792bfa2dcf582ea4eed3fa8745fdaff Author: Jonathan Ellis <[email protected]> Date: Mon Jun 5 14:37:15 2023 -0500 Support string literals as vectors Co-authored-by: Andrés de la Peña <[email protected]> commit 73a53c37536835e462e3cf17c452027c7aa591ed Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 12:25:39 2023 -0500 (take 3, this time with the code changes) fix race conditions across concurrent inserts + searches in memtable commit 51f4f419d31916a81088f171b158f1e002b5c800 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 12:25:39 2023 -0500 (take 2) fix race conditions across concurrent inserts + searches in memtable commit 94097a1f7cf1831c03e52b1f539bdc2e42fa038b Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 12:35:32 2023 -0500 Revert "fix race conditions across concurrent inserts + searches in memtable" This reverts commit c4d41b492190fb2644f83bf4902acf71d1e4f891. commit c4d41b492190fb2644f83bf4902acf71d1e4f891 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 12:25:39 2023 -0500 fix race conditions across concurrent inserts + searches in memtable commit 22143a8c5db160ef0fa7687ff3e8cb227de160f0 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 10:28:30 2023 -0500 fix AOOB in bruteForceRows logic commit b5624f62c88378e03260399440edf4d335ccc3af Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 10:12:53 2023 -0500 call deserializeFloatArray (which gives float[]) instead of deserialize (which gives List<Float>) commit 13ad40718737b54652c875d81ec20992b5828777 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 08:36:32 2023 -0500 create CassandraHnswGraphBuilder with concurrent and serial implementations, so that single-threaded compaction doesn't have to pay the concurrency overhead commit b83f4e4007e3d597963023b8ae32f4d0934b792d Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 08:00:44 2023 -0500 add ASL header to injections.md to make CI happy commit 16074336b1322d4bade40eb71562ca50221399dc Merge: 227c6c13a3 1ff6992354 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 07:48:04 2023 -0500 Merge branch 'VECTOR-37' into vsearch commit 227c6c13a3cfe42484fc560d629d54a93f8265e0 Author: Jaroslaw Grabowski <[email protected]> Date: Tue Jun 6 13:02:37 2023 +0200 CNDB-7007 return expired tables level from getLevels commit 312d07de8d297cdede39017354b678f2fb1b1006 Author: Jonathan Ellis <[email protected]> Date: Tue Jun 6 07:31:26 2023 -0500 randomize our brute force threshold, which will get the actual index scans exercised more commit 0b897961869965629893c94250b7d4b1fb7c0f86 Author: Zhao Yang <[email protected]> Date: Tue Jun 6 13:44:01 2023 +0800 Reference ANN sstable indexes in case of ann hybrid search (#653) * Reference ANN sstable indexes in case of ann hybrid search * simplify --------- Co-authored-by: Jonathan Ellis <[email protected]> commit 1ff6992354e8411f9f7c48a76f0aadb4a00f2789 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 5 21:55:14 2023 -0500 per-query hnsw metrics commit d3d6ae107737020eb0ca3b00c117d5bc84027dc0 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 5 21:16:14 2023 -0500 reduce test size to prevent Jenkins OOM commit 7765ac73fd29c9664b6f8e946c067d6f1b0a9a03 Merge: 5a04dbcf67 c5cd09cebf Author: Jonathan Ellis <[email protected]> Date: Mon Jun 5 21:15:44 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit c5cd09cebf0c63f7bafcd2f4548395efe68b12cd Author: Zhao Yang <[email protected]> Date: Tue Jun 6 09:38:42 2023 +0800 Skip warning log about receiving a range that is not owned by the current replica, see VECTOR-30 commit 5a04dbcf6738d7681732e28518d6eb37f74357b8 Author: Jonathan Ellis <[email protected]> Date: Mon Jun 5 11:21:15 2023 -0500 add injections.md from bdp repo commit baf9cce301a39f9506bd60c5a75d2011150f2fea Author: Jonathan Ellis <[email protected]> Date: Mon Jun 5 10:02:02 2023 -0500 VECTOR-36 fix looking up indexes and SSTableContext by SSTableReader, because the SSTR will be removed from internal structures once it's compacted commit e7fdc8454e750e2ee886c4ab27fb09abb46303fa Author: Jonathan Ellis <[email protected]> Date: Mon Jun 5 09:53:51 2023 -0500 limitToTopResults should skip rows that are not in the current segment (or more preciesely, have no vectors that were indexed) commit 2f64695a90651d9e76eee0a3399032ea241c983c Author: Zhao Yang <[email protected]> Date: Mon Jun 5 14:55:20 2023 +0800 Vector 6 take 2: reapply Vector-6 commit and fix NPE in SelectStatement (#648) * Revert "Revert VECTOR-6" This reverts commit 63a6ff609a02e4f7d9f5499f1af48ca5e58f63a8. * Vector-6 take 2: - fix NPE in SelectStatement by skipping reversed() for null ColumnComparator - fix getOrderingColumns() to return LinkedHashMap to preverse ordering columns' order - fix VectorLocalTest compilation - remove debug log in CassandraOnHeapHnsw commit 9da51b315d207417de4f3e005616e275c62c74cb Author: Zhao Yang <[email protected]> Date: Mon Jun 5 12:38:21 2023 +0800 fix SAI test failures in vsearch branch (#649) - BatchlogEndpointFilterTest - rangeRestrictedTest - SegmentFlushTest - SegmentMergerTest - OperationTest - RangeIntersectionIteratorTest commit dc53d7db5f0f8fe1c780f6d2b7580794f7b6b5fb Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 13:35:11 2023 -0500 create views for ordinals map so we don't have to open a new Reader for each method call commit c6385022ff2949c23e0dd0161a043cf4061f050c Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 08:19:32 2023 -0500 add assert sstableContext != null commit f340e7590db578b71201326e82006f72dd491047 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 07:37:36 2023 -0500 on-disk Searcher bits should not need to be growable commit fd5cc7f989a47d03689dd29495b974697ad1338b Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 07:37:18 2023 -0500 add asserts commit 6436e5f4ad49881a62c1442692edfedfe31968dc Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 07:21:50 2023 -0500 cleanup commit 32c8e005740d3c7ec0b1008091728e12260aecdd Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 13:57:18 2023 -0500 comment commit 091d96832ff9a68f6ea7857eafd2ec7ee0c09a0b Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 13:32:24 2023 -0500 r/m unused search method returning iterators over PrimaryKey commit 4e78a4b429b0ba6690871df9a91c8ffd8d2e53fa Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 11:25:30 2023 -0500 we can use the slightly more lightweight RangeConcatIterator instead of RangeUnionIterator when combining results from different Segments commit e7a9186bf3426ad025e809481e47db85a7bf7190 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 11:22:35 2023 -0500 r/m obsolete FIXME commit c76ee9ea0cab5b70c535de3f50b81cf333bf94a2 Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 07:12:43 2023 -0500 add testAppendedGraphs commit d00bdbfb6acf9f08d2bdfa2ef06e833e567cf9eb Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 06:57:37 2023 -0500 move write-to-File to test class commit b10fd1100daf4cde0291b3b4ef06f5ceb3ca650c Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 06:46:01 2023 -0500 fix Ref leaks in test commit 0656e558bb51172df4e0cde1ebe92946d4dcec8b Author: Jonathan Ellis <[email protected]> Date: Sat Jun 3 06:26:05 2023 -0500 fix tests to use View commit 92797ced03ed26f9a5cce398504d6f0de519b899 Author: Zhao Yang <[email protected]> Date: Sat Jun 3 19:19:38 2023 +0800 VECTOR-35: fix vector on-disk writer to append segments (#647) commit 22f5c01860367586d0cc39def7d975a6d6bae784 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 18:54:41 2023 -0500 add "Vector indexes only support ANN queries" check commit bfc0b056dbacd0a1eca86020e901f545dca7670e Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 17:34:24 2023 -0500 split invalid requests into separate test class commit f66768c35920101382c1975c9d0ba0e3301b7c61 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 17:28:56 2023 -0500 add specific error message when trying to do ANN without an index commit 63a6ff609a02e4f7d9f5499f1af48ca5e58f63a8 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 12:31:22 2023 -0500 Revert VECTOR-6 This reverts commits: a37009c187edeba68389d239dc1b9f40519b1187 5565690fbe1056d4c159ddbe233fa22c7695320a e7733bb8f858a16b082b8a5c64d0322db6f6271a commit 3d496662b259470b505d88212074c436660c27ad Merge: fab67bb134 4bdae7e362 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 11:05:53 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit 4bdae7e36213f5112efce085696dd24aaa0adfad Author: Mike Adamson <[email protected]> Date: Fri Jun 2 14:36:01 2023 +0100 Stabilise random tests using word2vec model vectors commit 2ddc3ec6b11f6810f6c4cbaf6b62bfe46d2d1b6c Merge: 8e04280312 1f9179002a Author: Jeremiah D Jordan <[email protected]> Date: Fri Jun 2 10:05:15 2023 -0500 Merge remote-tracking branch 'datastax/ds-trunk' into vsearch commit 8e04280312583a18085e7e7b9d31810790b039f4 Author: Jeremiah D Jordan <[email protected]> Date: Fri Jun 2 09:51:06 2023 -0500 Revert this after CNDB-6974 is fixed. commit fab67bb13499691f813c893cd39a3bbd406653d2 Author: Jonathan Ellis <[email protected]> Date: Fri Jun 2 08:59:12 2023 -0500 vector cache defaulting to 1MB per segment commit 67a2b7eba3c957a993726d37706643979e92a3a3 Author: Jeremiah D Jordan <[email protected]> Date: Thu Jun 1 17:49:35 2023 -0500 Revert this after CNDB-6974 is fixed. commit 4538956b31d8c40d2e9b603b3b0a3392343e1853 Merge: 7518680a4a af4c83aef4 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 16:17:14 2023 -0500 Merge branch 'ds-trunk' into vsearch commit 7518680a4a17cb2589cf06a9175befc10c9eab1a Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 16:14:33 2023 -0500 re-use float[] across calls to vectorValue to avoid allocation overhead (credit to Jake for the idea) commit d20bd8aedeb6232358dd16f901e2708f217b8108 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 15:35:17 2023 -0500 optimize vectorValue() with direct access to the mmap-ed region commit 24572025af5b7893279b5b03c58555b682f3abdb Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 14:33:55 2023 -0500 decomposeVector does not modify the underlying buffer, so no need to duplicate() here commit efef35d47a24222fae300d1cbd5a801e9ed79442 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 14:29:30 2023 -0500 specialize deserializeFloatArray for ByteBuffer and FloatBuffer. this saves about 3% total CPU on search workloads commit 63c27f5550d6c3e22d960b9a42b9097029e3b760 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 11:04:23 2023 -0500 default target size of 5GB commit 69c55c8d07c6e1d58b4829c153f5ebf8a4343669 Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 07:20:38 2023 -0700 make the on-disk hnsw code threadsafe using FileHandle.createReader (#641) commit b194cae2e56133b946d0231768254064a47f01b6 Merge: 7ee6422084 23c2891e7a Author: Jonathan Ellis <[email protected]> Date: Thu Jun 1 06:22:17 2023 -0500 Merge branch 'ds-trunk' into vsearch commit 7ee642208485c9e2ae62aa662dbbddc7b295bae1 Merge: c286ec0ee2 a37009c187 Author: Jonathan Ellis <[email protected]> Date: Wed May 31 20:41:48 2023 -0500 Merge branch 'VECTOR-6' into vsearch commit c286ec0ee231ededded18e81357edebe72064c59 Author: Jonathan Ellis <[email protected]> Date: Wed May 31 20:40:21 2023 -0500 add testLargeGraph commit a37009c187edeba68389d239dc1b9f40519b1187 Author: Zhao Yang <[email protected]> Date: Thu Jun 1 08:50:07 2023 +0800 cleanup unused code commit 6246dbe3a970a0f4672701632003cdf576705c24 Author: Jonathan Ellis <[email protected]> Date: Wed May 31 16:43:42 2023 -0500 comment commit c7420440c7d3c81eac96e716148d570ae3cceb1d Author: Jonathan Ellis <[email protected]> Date: Wed May 31 16:43:37 2023 -0500 encapsulate shadowedPrimaryKey better commit a1a25c33b8bec9d78354dd2c1d992444db2bf76f Author: Jonathan Ellis <[email protected]> Date: Wed May 31 15:57:52 2023 -0500 make hnsw cache size configurable, and make the default 128KB (roughly the size of the bloom filter for a 1GB sstable) commit 55747d2351e915645697fa8dec404c749540456f Author: Andrés de la Peña <[email protected]> Date: Wed May 31 19:28:47 2023 +0100 Replace FunctionParameter.sameAsFirst by FunctionParameter.sameAs, allowing type inferrence in both directions for vector functions commit 5565690fbe1056d4c159ddbe233fa22c7695320a Author: Jonathan Ellis <[email protected]> Date: Wed May 31 12:59:42 2023 -0500 cleanup and fix commit e7733bb8f858a16b082b8a5c64d0322db6f6271a Author: Zhao Yang <[email protected]> Date: Wed May 24 16:01:26 2023 +0800 VECTOR-6: return vector results to client in ANN order instead of token order commit 771067d1475c94484da178236928d2bad78e00b1 Author: Mike Adamson <[email protected]> Date: Wed May 31 18:33:55 2023 +0100 Fix annOrderingMustHaveLimit test commit 8dd76a73541e70da0da022dd463e6711a315f971 Author: Mike Adamson <[email protected]> Date: Wed May 31 18:30:49 2023 +0100 Improve the validation of ORDER BY <column> ANN OF (#639) * Improve the validation of ORDER BY <column> ANN OF * Change to hasNonClusteredOrdering and improve limit message commit 1ef6f2e3418db19af23f0eae24cd344d72290455 Author: Jonathan Ellis <[email protected]> Date: Fri May 26 18:34:25 2023 -0500 add vector similarity functions commit f4e3a39a8ece623647ba7891981e7c5ee10ed96b Author: Jonathan Ellis <[email protected]> Date: Wed May 31 09:39:45 2023 -0500 pull in the smallest set of changes possible from 93e0ae9a to get FunctionParameter.sameAsFirst commit 0ef2614346c9426a966004df220221f74353de70 Author: Jonathan Ellis <[email protected]> Date: Wed May 31 06:22:41 2023 -0700 Add support for updates + deletes (#636) commit 5da9fefe1e18f733bb8ffd0a35ef2e1ac3cbd975 Author: Jonathan Ellis <[email protected]> Date: Tue May 30 16:32:02 2023 -0500 rename SegmentOrdering.reorderOneComponent to limitToTopResults to align with MemtableOrdering commit caf6eb2154ddf57c88d69c6246404b65e183057d Author: Mike Adamson <[email protected]> Date: Tue May 30 22:41:29 2023 +0100 Fix V1SearchableIndex.reorderOneComponent to use segments (#635) commit 72cfa94e9389d0078d64aee60d26b8b01c6ca22f Author: Piotr Kołaczkowski <[email protected]> Date: Mon May 29 20:17:44 2023 +0200 VECTOR-14: Move ANN OF expressions from WHERE to ORDER BY Before: SELECT * FROM table WHERE <vector column> ANN OF <vector value>; After: SELECT * FROM table ORDER BY <vector column> ANN OF <vector value>; commit 226266ef124fc220819d328ed8547c5d86626c4b Author: Mike Adamson <[email protected]> Date: Tue May 30 18:58:16 2023 +0100 Implement getInstance(TypeParser) for VectorType. Fix losing data at startup. commit 2bbe88ad88e2243f12dc8df789ea9bdf208ff74b Merge: dd0ffb64f3 a3b8661746 Author: Jonathan Ellis <[email protected]> Date: Tue May 30 12:37:58 2023 -0500 merge ds-trunk commit dd0ffb64f3e54e2ce1af75da52fe3ece66a49f3f Author: Jonathan Ellis <[email protected]> Date: Tue May 30 11:40:20 2023 -0500 reduce startup log noise at info level commit 1ef17101def1aacbb84f3434633a9b706291aa4b Author: Jonathan Ellis <[email protected]> Date: Tue May 30 11:34:26 2023 -0500 add partialUpdateTest commit f816046a17809b06ad754a16c0f089c0d26909f9 Author: Jonathan Ellis <[email protected]> Date: Mon May 29 12:57:12 2023 -0500 fix recall computation in test commit 1c1442c36baafdf4e1641a9c0288dbd520cf7c0e Author: Jonathan Ellis <[email protected]> Date: Mon May 29 12:34:02 2023 -0500 also apply tolerance for inexact results to searchWithKey, but only for size > 10 commit 39df5112c6a551b53649ad98164f2bde93cbdc10 Merge: d598206329 8ca4bba861 Author: Jonathan Ellis <[email protected]> Date: Mon May 29 12:27:24 2023 -0500 merge ds-trunk commit 8ca4bba8617e8d0fa4f48de1c479de66e3a77dd3 Author: Jonathan Ellis <[email protected]> Date: Mon May 29 12:19:32 2023 -0500 rename MemtableIndex -> TrieMemtableIndex to make merge to vsearch easier commit d5982063292b6a91b156da32454abacd36fa6980 Merge: ae96e0f423 1488a5f0b9 Author: Jonathan Ellis <[email protected]> Date: Mon May 29 09:03:24 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit ae96e0f42393eab3547e2314f1acdb1ff766f2a6 Author: Jonathan Ellis <[email protected]> Date: Mon May 29 09:02:12 2023 -0500 check for results within a percentage (I went with 5%) of the expected; the A in ANN means we shouldn't expect to find 100% of matches unless the graph is tiny commit 1488a5f0b9c65473bb6a69c9e18c045d931a1fe3 Author: Zhao Yang <[email protected]> Date: Mon May 29 09:20:28 2023 +0800 Vector-19: fix PrimaryKey min/max prefix ByteComparable and add reversed lookup for row id (#627) * Vector-19: fix PrimaryKey min/max prefix ByteComparable and add reversed lookup for row id commit 14c41f5f913dc7f7f4cfc64b932bb6b9df475f19 Author: Jonathan Ellis <[email protected]> Date: Wed May 17 17:35:16 2023 -0500 use incremental bytes used estimate from hnsw to avoid recomputing full ramBytesUsed on every call to add commit f8d2aaad6e96693f532d745f71e0eaabb1ddf934 Author: Jeremiah D Jordan <[email protected]> Date: Fri May 26 12:02:54 2023 -0500 Update cqlsh for new syntax commit f0a882ae1171d41bc9c6ccf224ce3be80f7128e8 Author: Mike Adamson <[email protected]> Date: Fri May 26 16:24:38 2023 +0100 Only allow VectorType to accept float commit a29712b1365cdfac9a709e35325e85f7fa6c61c8 Author: Mike Adamson <[email protected]> Date: Fri May 26 16:17:51 2023 +0100 Fix max term size for vectors at 16k is SSTableIndexWriter commit 363d3f4e35c1a4df0f257557309bb042fd3f3ec7 Author: Mike Adamson <[email protected]> Date: Fri May 26 15:23:02 2023 +0100 Merge CASSANDRA-18504 vector grammar (#628) - Now uses vector<type, dimension> to describe vector - This commit does not bring in the whole 18504 patch only the essential grammar and type parts of the patch commit 18c4e35d4ce14cda7a3c03398e16edf368ad9e6a Merge: 16158a5b48 b0f71ee2c3 Author: Jonathan Ellis <[email protected]> Date: Thu May 25 16:24:41 2023 -0500 Merge branch 'VECTOR-3' into vsearch commit b0f71ee2c371d1003cf241c3aedd7437385bcecb Author: Jonathan Ellis <[email protected]> Date: Thu May 25 15:51:27 2023 -0500 cleanup commit 2d840eae74c079229729767731d3719d12ca1931 Merge: c01cacf300 197a3207b1 Author: Jonathan Ellis <[email protected]> Date: Thu May 25 15:47:39 2023 -0500 Merge branch 'vsearch' (early part) into VECTOR-3 commit 16158a5b48665f57bde649e87a09d078298932f5 Author: Jonathan Ellis <[email protected]> Date: Thu May 25 15:45:51 2023 -0500 optimize ramBytesUsed commit 197a3207b16ec97bae4924883247e2cd6a2923bd Author: Jonathan Ellis <[email protected]> Date: Thu May 25 13:34:19 2023 -0500 update lucene commit a7bfcc7a6f31090c3c8443d299dabb7acd437ccd Author: Jonathan Ellis <[email protected]> Date: Thu May 25 08:05:41 2023 -0500 optimize ConcurrentVectorValues.write commit 456fb08af0b922922ea0e4f24def0184cf4b32c6 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 21:25:52 2023 -0500 fix NPE better commit c01cacf30025d181a2d86c4632042449396333bc Author: Zhao Yang <[email protected]> Date: Thu May 25 08:53:38 2023 +0800 Return negative ordinal if row id is not found; add failing test for null vector commit 009fadf2ed889bcc6748f500b7fa4b1d43e910df Author: Jonathan Ellis <[email protected]> Date: Wed May 24 18:00:23 2023 -0500 search() errors out when an empty graph is passed to it, so special-case that commit 8c9972d7453fad46f55e6fe5e7538442235e7fd6 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 17:46:50 2023 -0500 use serializer dimensions instead of trying to cache it from the first vector added, because we might need it before vectors are added (if someone tries to search an empty graph) commit 8423541c4997462b65fe8f1231b0baf15dab3297 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 17:42:30 2023 -0500 fix NPEs when nulls are inserted commit d4510e0f1934f03f66d89b7c585b3d7aac17dda2 Author: Mike Adamson <[email protected]> Date: Wed May 24 15:54:38 2023 +0100 Rebuild HNSW graph on flush since we don't know ahead of time where UCS will want to split the range boundaries commit 6b925531011798285a6b25d70961643092e2febe Author: Mike Adamson <[email protected]> Date: Mon May 22 14:58:22 2023 +0100 disable index segment compaction by default commit 3480a80e3303c13b8c04f718f83f87489315e381 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 14:46:03 2023 -0500 move chatty logs to debug level commit 05c5758244f6f6d4fe30fbcefbb13932f68f8891 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 13:59:01 2023 -0500 r/m fixme obsoleted by #624 commit b09db4e0425c92491e3e9c73ebdbdb84508075fd Author: Jonathan Ellis <[email protected]> Date: Wed May 24 13:56:46 2023 -0500 pre-size the intersection builder commit 6d62d8c2546cda1f487c14dcde1303e14a18c804 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 13:45:14 2023 -0500 fix nested boolean expressions commit b8301a86d37513b67545883548c5670131281dc1 Author: Zhao Yang <[email protected]> Date: Wed May 24 14:19:41 2023 +0800 Vector-3: support partition/range restricted query commit 8ba56fad62d21da228e3a61ed7d5971441572cf9 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 10:35:16 2023 -0500 update lucene version hash commit a4768c583eb1a029f629e5ebda274ab2fcce3130 Author: Jeremiah D Jordan <[email protected]> Date: Tue May 23 10:45:02 2023 -0500 Revert the revert of "Use published lucene fork jar."" This reverts commit 7a8ff12860a97d451045c9dd1978a3599a0f4679. commit 063a176caeec0f1e298d044490aa29ecdd468811 Author: Zhao Yang <[email protected]> Date: Wed May 24 22:03:32 2023 +0800 Union the results from multiple segments per index (#624) - Union the results from multiple segments per index - Revert intersection behavior to pick 2 most selective indexes if there is no ANN - Fix SSTableRowIdPostingList to return END_OF_STREAM if next row is END_OF_STREAM - Skip TermTree for vector index - Fixes: - VectorMemtableIndexTest#randomQueryTest - SegmentMergerTest - SingleNodeQueryFailureTest#testFailedRangeIteratorOnMultiIndexesQuery - SelectiveIntersectionTest - QueryTimeoutTest commit 643f34c2b654b80573ba92381e386b4286f7fb63 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 08:25:35 2023 -0500 switch all the hnsw internals to use float[] so we don't need to keep both representations around commit 7a8ff12860a97d451045c9dd1978a3599a0f4679 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 08:06:28 2023 -0500 Revert "Use published lucene fork jar." This reverts commit 53c6c90920dd2a48fc3334a6cddb215d3f4ebfcd. commit 8731eefe4122a5af0b3723a3b07884a201616e7a Merge: e50d5e955b 53c6c90920 Author: Jonathan Ellis <[email protected]> Date: Wed May 24 08:05:18 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit e50d5e955bfde6357a5bb892b2ea70d46e8cc77d Author: Jonathan Ellis <[email protected]> Date: Wed May 24 08:02:52 2023 -0500 cache float[] from ByteBuffer commit 53c6c90920dd2a48fc3334a6cddb215d3f4ebfcd Author: Jeremiah D Jordan <[email protected]> Date: Tue May 23 18:29:00 2023 -0500 Use published lucene fork jar. commit f2567cd2fb2a683e7c0fee23945baac3ceca6ad4 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 14:56:25 2023 -0500 attempting to add back IN support but with limited success, even "basicOrTest" gets parsed as child nodes commit 9e1f018f5c0d5832446fc6a0338aaf95c8323303 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 14:21:23 2023 -0500 reduce log level of some of the chattiest locations commit efaf501fe3158da42dcd874b06014acb127f5cd9 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 13:55:40 2023 -0500 clean up RangeIntersection Builder overloads commit e7127d9d32392347f7010de6267521742f831217 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 13:46:27 2023 -0500 complete generification of RangeIterator in src/ (but tests are still incomplete) commit c07ded6420aa25b9dfa2b3c0785178b08d286b26 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 13:04:16 2023 -0500 TermIterator is more or less replaced by CheckpointingIterator commit 14d03ae99c69c2419dc0cca3291b4f5eaefbc054 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 14:45:18 2023 -0500 update lucene jar commit a15b964d56dcba285c6871d354755d7aa489af1d Author: Jonathan Ellis <[email protected]> Date: Tue May 23 12:48:41 2023 -0500 disk and memory recalls should be the same (since disk graph should be exactly equivalent to in-memory) commit f03680bdf8581fd13a2d772e8265e3c8a713d247 Merge: 868a6b8f11 fd1293dbaf Author: Jonathan Ellis <[email protected]> Date: Tue May 23 12:08:46 2023 -0500 Merge branch 'vsearch' of github.com:datastax/cassandra into vsearch commit 868a6b8f11a25c20b7e59a93d65cc7e2b021a432 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 12:04:11 2023 -0500 use brute force if we expect to perform fewer comparisons that way than with a graph search commit 2ed32bf53acaf8180130bef1aa5cebd9b6d32d13 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 11:59:11 2023 -0500 refactor AnnKeyRangeIterator -> ReorderingRangeIterator commit d28bad9b2df3fc84b117f9ed0a04314ecb9c0a02 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 11:55:15 2023 -0500 rename reorderOneComponent to limitToTopResults commit fd1293dbaf82f054593b3150249ac00110b286cf Author: Jeremiah D Jordan <[email protected]> Date: Tue May 23 10:45:02 2023 -0500 Update python driver to one with supports the Vector type commit 6603f7601671357928948dfb0921b0c731bb96d3 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 11:06:12 2023 -0500 extract ReorderingPostingList commit 94b4ff20ccc3a51e966b4798f5364a2d9ed4b966 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 10:29:33 2023 -0500 deserialize doesn't modify buffer so duplicate is unnecessary commit 840053d212985a109cb5242c19e8a5876fdec7b3 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 10:26:57 2023 -0500 use LongHeap instead of generic PQ commit aac90dc3e0fdb745e465f044f2624228e705be10 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 09:47:22 2023 -0500 r/m unused defer flag from toPrimaryKeyIterator / toSSTableRowIdsIterator commit 1fd71c1cb7f2e785237b36c6e42842fb326d2380 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 09:26:03 2023 -0500 remove unused method marked "to remove" commit b96c5a9efccf3226acf2f2a08ca149d0acc0b21d Merge: 54f41e32d3 ba8aa07dd0 Author: Jonathan Ellis <[email protected]> Date: Tue May 23 09:24:44 2023 -0500 Merge remote-tracking branch 'zhao/vsearch-row-id-iterator-for-reordering' into vsearch commit 54f41e32d3359941ddf70d34fc8e68a842b9091d Author: Jonathan Ellis <[email protected]> Date: Tue May 23 08:14:10 2023 -0500 update lucene to fix NPE in ram usage commit ba8aa07dd09f52a72e5dffccb950a21ec37a1c11 Author: Zhao Yang <[email protected]> Date: Tue May 23 16:51:36 2023 +0800 intersect on row-ids before fetching primary key for multiple non-ann indexes or single index commit 2a69547167f8dc1b40e8a26b71cdf43a45779280 Author: Zhao Yang <[email protected]> Date: Tue May 23 09:44:00 2023 +0800 Use sstable-row-id iterator to re-order ann index - add searchSSTableRowIds to searcher commit 04b9a606d9a1aaeeeab3ec0981a5f1300cc2a423 Author: Zhao Yang <[email protected]> Date: Tue May 23 00:30:12 2023 +0800 Make RangeIterator generic commit 4ff716a7411d3ad80009d4fb97bf53af51dd5eba Author: Jonathan Ellis <[email protected]> Date: Mon May 22 14:57:34 2023 -0500 r/m obsolete FIXMEs commit 175ad0edce9cef3fb29f230fb64fb1913328d101 Author: Zhao Yang <[email protected]> Date: Tue May 23 00:30:12 2023 +0800 fix vector distributed test: use 1 token and ignore multi-ann-index test (#622) commit 78adf77d9e6b7f20ece71fe665a5d1aec51f79b6 Author: Mike Adamson <[email protected]> Date: Mon May 22 14:26:48 2023 +0100 Copy lucene snapshot to build folder in build-resolver.xml commit 5172315dcb51e05a44af224ddfe944bca29005d0 Author: Jonathan Ellis <[email protected]> Date: Mon May 22 08:17:41 2023 -0500 declare lucene dependency to come from lib/ commit d4ee45b8675f79b4a1e06f97d0ce618ab08f030a Author: Jonathan Ellis <[email protected]> Date: Sun May 21 05:40:30 2023 -0500 add caching and test code commit 5102d96e2fb3460f1e541cc1b481e224d112eac1 Merge: 6afcfabe88 87d39a7b25 Author: Jonathan Ellis <[email protected]> Date: Sat May 20 11:15:14 2023 -0500 merge cep-vsearch commit 6afcfabe883c5627c96eda8eb488c51c06e17c91 Merge: a993dbe49a fa85a191c5 Author: Jonathan Ellis <[email protected]> Date: Sat May 20 09:15:13 2023 -0500 Merge commit 'fa85a191' into vsearch commit a993dbe49a75dde4b9d5528e0816b81ae427a1dd Author: Jonathan Ellis <[email protected]> Date: Fri May 19 22:00:31 2023 -0700 FIXME not sure why version is messed up post merge, this hacks around it commit aadf168e47a4271cc3faeb62ec7044cbfe193893 Merge: c217120935 5bc4d4b42e Author: Jonathan Ellis <[email protected]> Date: Sat May 20 08:52:48 2023 -0500 merge 5bc4d4b42e commit c2171209350cc307f3b5fcc73a6ec09423d203df Author: Jonathan Ellis <[email protected]> Date: Fri May 19 22:00:31 2023 -0700 FIXME not sure why version is messed up post merge, this hacks around it commit 2e44491d3db6a881324126490e6e1511d6082f39 Merge: 68f85f7009 0ff4566080 Author: Jonathan Ellis <[email protected]> Date: Sat May 20 08:15:16 2023 -0500 merge 0ff4566080 commit 68f85f700995b274ec0d64654ed2692c7fc8bf61 Merge: c8843779be 2ae60e7411 Author: Jonathan Ellis <[email protected]> Date: Sat May 20 07:50:16 2023 -0500 Merge commit '2ae60e74' into vsearch commit c8843779be9fe0c3edd047754bb08f633cff5646 Merge: 3cb57548bb 93616d080c Author: Jonathan Ellis <[email protected]> Date: Sat May 20 07:43:18 2023 -0500 Merge commit '93616d080c539e880e37cd22fe5f27396a7a2594' into vsearch commit 87d39a7b252b3f3cc1f4aae0f149085f6bc83abc Author: Jonathan Ellis <[email protected]> Date: Fri May 19 17:24:55 2023 -0700 fix intersection count, and add comments to KRI api commit 4fdc58fced9ca350333675cb19a42169bebeaccf Author: Jonathan Ellis <[email protected]> Date: Fri May 19 15:27:34 2023 -0700 test recall commit 26fb1006430513a37f267a4dfb81ef473516ac7b Author: Jonathan Ellis <[email protected]> Date: Fri May 19 14:19:08 2023 -0700 add tests commit 1cbf78bbf71fff2d597ddd199fd3a758313c7bf4 Author: Jonathan Ellis <[email protected]> Date: Fri May 19 14:02:36 2023 -0700 comments commit 65e41490f041535f1a48a726032e28f6c8febcff Author: Jonathan Ellis <[email protected]> Date: Fri May 19 13:57:04 2023 -0700 rm AnnResult commit 06b10a28c3f6f19c76b056526cdabb4c9aff1528 Author: Jonathan Ellis <[email protected]> Date: Fri May 19 13:54:08 2023 -0700 cleanup commented-out code commit e33236ab8b9da7a025f4c59406c52ecbc3b5ae4f Author: Jonathan Ellis <[email protected]> Date: Fri May 19 09:52:50 2023 -0700 convert suspicious one-off binary search in OnDiskHnswGraph to use DiskBinarySearch commit fbd30bce13e87c63b129db26c5c123ae9bf8f9ed Author: Jonathan Ellis <[email protected]> Date: Fri May 19 09:31:16 2023 -0700 perform disk-based binary search for ordinals commit 77bb1b5cfcc743224bdb01d21563365caa184c21 Author: Jonathan Ellis <[email protected]> Date: Fri May 19 08:22:36 2023 -0700 move OnDiskOrdinalsMap to its own class, and move write() code into it commit 8a1fd9f0a38f4c16b72d5bc7b2aeb3ee07bacc7a Author: Jonathan Ellis <[email protected]> Date: Thu May 18 21:35:28 2023 -0700 add ordinal to row mapping commit db32d9c7b077133a213ac3a0da161f163c4310a1 Author: Jonathan Ellis <[email protected]> Date: Wed May 17 20:43:49 2023 -0500 mostly-working reordering commit 62ba004d79aa7511f519ebb56fa8af2cb424e21e Author: Jonathan Ellis <[email protected]> Date: Wed May 17 20:13:10 2023 -0500 turn QueryView inside out; perform intersections first for each sstable, then union the results commit d65039a6ccd8364e8eb8ef31933cdf8dca298437 Author: Jonathan Ellis <[email protected]> Date: Wed May 17 18:37:07 2023 -0500 update MIM to give individual iterators back commit a190f1e917b93b6cabd15347dec55b1683807b1f Author: Jonathan Ellis <[email protected]> Date: Wed May 17 18:59:13 2023 -0500 refactor CheckpointingIterator to just take an iterator to wrap, and index references to close if something goes wrong commit 307fe1c20b400e17048a356f73822ef51f66f341 Author: Jonathan Ellis <[email protected]> Date: Wed May 17 18:47:20 2023 -0500 rename IndexSearchResultIterator -> CheckpointingIterator commit 690751b216afbe3e77ed0f89ce04d16e5c6e985d Merge: 4b6d0f2fb5 fa85a191c5 Author: Jonathan Ellis <[email protected]> Date: Wed May 17 10:17:49 2023 -0500 Merge branch 'cep-7-sai' into cep-vsearch commit 4b6d0f2fb531f6832d2b24465b0982683e741dfe Author: Zhao Yang <[email protected]> Date: Wed May 17 16:45:42 2023 +0800 Add vector top-k filter at replica side before returning to coordinator (#618) * added QueryPlan#postIndexQueryProcessor to filter top-k at replica side before sending response to coordinator commit 5bc4d4b42e77180df050bdbd9f5fd18fbb37332c Author: Jonathan Ellis <[email protected]> Date: Tue May 16 07:38:45 2023 -0500 failing test was failing b/c test was wrong commit f37e40f5c5d99aeaafb33f41be0bd10bff6b5756 Merge: ae1bffa49b 1c41a095e1 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 21:24:47 2023 -0500 merge commit ae1bffa49b4c8757a3d9110ae065b8cb70d8e416 Merge: bbc4f72b8d 381e04aaa1 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 21:22:16 2023 -0500 Merge commit '381e04aaa132cf7a255efad3f792852d9ec1729d' into cep-vsearch commit 1c41a095e130bce4c7c215650f9ef3f817ae635e Author: Jonathan Ellis <[email protected]> Date: Mon May 15 21:11:47 2023 -0500 fix computeNext to return endOfData when done commit b845395ad7e5f4670597cd171f28b98c941d03a7 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 21:11:15 2023 -0500 cleanup commit 58df11dad894aa5fb36bfbdaaf4c7dc1987fcc94 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 20:59:12 2023 -0500 failing tests commit ea5977620ebb07d220ad51800c9b90f470494079 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 20:58:52 2023 -0500 FIXME temporarily remove checkstyle commit 715790922379ad7b5dbdea5d3358f24542762889 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 20:49:10 2023 -0500 cleanup commit 19e47d363c856f81bda3323be02bfe18f60b51c0 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 17:55:52 2023 -0500 update NeighborSet usage commit 920abafce00c94bbc7d6b0c86ba78a2a9d3f9540 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 17:53:43 2023 -0500 cleanup commit d58db09004427506efe03e81364cadf44fc914c4 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 15:46:06 2023 -0500 pull in latest hnsw optimizations commit bbc4f72b8d7d99db003103103c90d78db4ee04d1 Author: Jonathan Ellis <[email protected]> Date: Mon May 15 10:02:40 2023 -0500 use IndexOutputWriter in other components commit 381e04aaa132cf7a255efad3f792852d9ec1729d Author: Jonathan Ellis <[email protected]> Date: Mon May 15 09:32:25 2023 -0500 switch other components to also use IndexOutputWriter commit 5951690f5472502bcb093179e8905212c1fcf815 Author: Mike Adamson <[email protected]> Date: Mon May 15 14:48:16 2023 +0100 Fix CassandraHnswGraphWriter to use correct output writer (#616) commit bc5b956607fa77d53fcab9ad338776af69610feb Author: Zhao Yang <[email protected]> Date: Mon May 15 17:35:42 2023 +0800 Distributed vector search (#613) * distributed vector search - query all replicas selected by consistency level at once with full request range - filter top-K results at coordinator in QueryPlan#postProcessor - skip short-read-protection, read repair and replica filtering protection because replica response will be top-k - fail ANN query without limit or limit exceeding MAX_TOP_K - make vector search max_top_k configurable and default to 1k commit 6d8c94535354f162f60099deecb0523f9f71bb99 Author: Jonathan Ellis <[email protected]> Date: Sun May 14 10:01:08 2023 -0500 fix imports for checkstyle commit 68c20dc9ceeaf0c2169718aa4a1dce9c0f92f003 Author: Jonathan Ellis <[email protected]> Date: Sat May 13 19:23:58 2023 -0500 add the index and ordinal mapping to the set of components that the system knows about commit ba7efaac142c8b3181881f86020f659837c90463 Author: Jonathan Ellis <[email protected]> Date: Sat May 13 17:57:22 2023 -0500 cleanup commit 5ae06fe31840e5ba1899086f3b8eb8194f825db7 Author: Jonathan Ellis <[email protected]> Date: Sat May 13 17:23:30 2023 -0500 update to latest lucene snapshot that addresses all known concurrency bugs commit f996edd63f66cf7b688f8e014b31f15450dd1d3d Author: Jonathan Ellis <[email protected]> Date: Fri May 12 16:08:40 2023 -0500 fix for cqlsh by Bret McGuire commit fa85a191c5e0bd508da584412648308888769cb9 Author: Andrés de la Peña <[email protected]> Date: Mon Apr 24 16:39:26 2023 +0100 Allow CQL queries on multiple indexes without ALLOW FILTERING patch by Andrés de la Peña; reviewed by Berenguer Blasi for CASSANDRA-18217 commit e2f3d2150ab2bc5e038f2661b8e2337d3b5cd4bf Author: Jonathan Ellis <[email protected]> Date: Thu May 11 14:34:22 2023 -0500 imports commit 68e59bc715de6d1f69d69530310655a598a54200 Author: Mike Adamson <[email protected]> Date: Thu May 11 17:20:52 2023 +0100 Use correct bind types for vector commit c57119254b7e065433804e36ed6ead71d53984ea Author: Jonathan Ellis <[email protected]> Date: Wed May 10 23:06:19 2023 -0500 avoid calling neighborSet.size() in write path commit f91e9ea40fa4bfc07c0bb280b7c479d473956da3 Author: Jonathan Ellis <[email protected]> Date: Wed May 10 23:05:11 2023 -0500 add more asserts. countNeighbors is failing commit 1bd6789304a60762f0ef497c2137dd96f806a262 Author: Jonathan Ellis <[email protected]> Date: Wed May 10 22:40:01 2023 -0500 lock out updates to the graph while we're writing it to disk commit da7cb2984f96c06a5890ed2da21c42d946d7c754 Author: Jonathan Ellis <[email protected]> Date: Wed May 10 22:06:58 2023 -0500 imports commit 3676a86b821c6c05d9c5df33f4e4fbc9eeb1f591 Author: Jonathan Ellis <[email protected]> Date: Wed May 10 22:03:14 2023 -0500 compact by building graph in memory, like it did before commit fa1ebd013bc03def3d211932fe2a98d1bb4442d9 Author: Jonathan Ellis <[email protected]> Date: Wed May 10 16:15:58 2023 -0500 rewrite save-to-disk without Lucene code, to support multiple rows having the same vector value bonus: we don't need to rebuild an index that we already have in memory commit 3b328324d7c3afcda34a95c4b9fcbb9fe017384c Author: Jonathan Ellis <[email protected]> Date: Wed May 10 17:00:02 2023 -0500 upgrade to latest lucene snapshot commit 1f4e768e9ec3327a5…
1 parent befebc4 commit 9cabec5

File tree

283 files changed

+17829
-1973
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

283 files changed

+17829
-1973
lines changed

.build/build-resolver.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@
200200
<!-- files.pythonhosted.org -->
201201
<get src="${artifact.python.pypi}/59/a0/cf4cd997e1750f0c2d91c6ea5abea218251c43c3581bcc2f118b00baf5cf/futures-2.1.6-py2.py3-none-any.whl" dest="${local.repository}/org/apache/cassandra/deps/futures-2.1.6-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
202202
<get src="${artifact.python.pypi}/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl" dest="${local.repository}/org/apache/cassandra/deps/six-1.12.0-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
203+
<get src="${artifact.python.pypi}/20/f4/c0584a25144ce20bfcf1aecd041768b8c762c1eb0aa77502a3f0baa83f11/wcwidth-0.2.6-py2.py3-none-any.whl" dest="${local.repository}/org/apache/cassandra/deps/wcwidth-0.2.6-py2.py3-none-any.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
203204

204205
<!-- apache/cassandra/lib -->
205206
<get src="${lib.download.base.url}/lib/geomet-0.1.0.zip" dest="${local.repository}/org/apache/cassandra/deps/geomet-0.1.0.zip" usetimestamp="true" quiet="true" skipexisting="true"/>
@@ -233,6 +234,7 @@
233234
<file file="${local.repository}/org/apache/cassandra/deps/futures-2.1.6-py2.py3-none-any.zip"/>
234235
<file file="${local.repository}/org/apache/cassandra/deps/six-1.12.0-py2.py3-none-any.zip"/>
235236
<file file="${local.repository}/org/apache/cassandra/deps/geomet-0.1.0.zip"/>
237+
<file file="${local.repository}/org/apache/cassandra/deps/wcwidth-0.2.6-py2.py3-none-any.zip"/>
236238
</copy>
237239
<copy todir="${build.lib}/sigar-bin/" quiet="true">
238240
<file file="${local.repository}/org/apache/cassandra/deps/sigar-bin/libsigar-amd64-freebsd-6.so"/>

bin/cassandra.in.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ java_ver_output=`"${JAVA:-java}" -version 2>&1`
115115
jvmver=`echo "$java_ver_output" | grep '[openjdk|java] version' | awk -F'"' 'NR==1 {print $2}' | cut -d\- -f1`
116116
JVM_VERSION=${jvmver%_*}
117117

118-
JAVA_VERSION=11
118+
JAVA_VERSION=${JVM_VERSION%%.*}
119119
if [ "$JVM_VERSION" = "1.8.0" ] ; then
120120
JVM_PATCH_VERSION=${jvmver#*_}
121121
if [ "$JVM_VERSION" \< "1.8" ] || [ "$JVM_VERSION" \> "1.8.2" ] ; then
@@ -153,7 +153,9 @@ esac
153153

154154
# Read user-defined JVM options from jvm-server.options file
155155
JVM_OPTS_FILE=$CASSANDRA_CONF/jvm${jvmoptions_variant:--clients}.options
156-
if [ $JAVA_VERSION -ge 11 ] ; then
156+
if [ $JAVA_VERSION -ge 17 ] ; then
157+
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm17${jvmoptions_variant:--clients}.options
158+
elif [ $JAVA_VERSION -ge 11 ] ; then
157159
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm11${jvmoptions_variant:--clients}.options
158160
else
159161
JVM_DEP_OPTS_FILE=$CASSANDRA_CONF/jvm8${jvmoptions_variant:--clients}.options

build.xml

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -685,14 +685,16 @@
685685
</dependency>
686686
<dependency groupId="org.hamcrest" artifactId="hamcrest" version="2.2" scope="test"/>
687687
<dependency groupId="org.agrona" artifactId="agrona" version="0.9.26" />
688-
<dependency groupId="org.apache.lucene" artifactId="lucene-core" version="7.5.0" />
688+
<dependency groupId="org.apache.lucene" artifactId="lucene-core" version="9.8.0-1adfb2f77f" />
689+
<dependency groupId="org.apache.lucene" artifactId="lucene-analysis-common" version="9.8.0-1adfb2f77f" />
689690
<dependency groupId="com.bpodgursky" artifactId="jbool_expressions" version="1.14" scope="test"/>
690-
<dependency groupId="org.apache.lucene" artifactId="lucene-analyzers-common" version="7.5.0" />
691691

692692
<dependency groupId="com.carrotsearch.randomizedtesting" artifactId="randomizedtesting-runner" version="2.1.2" scope="test">
693693
<exclusion groupId="junit" artifactId="junit"/>
694694
</dependency>
695-
695+
696+
<dependency groupId="com.github.haifengl" artifactId="smile-nlp" version="3.0.1" scope="test"/>
697+
696698
<dependency groupId="io.micrometer" artifactId="micrometer-core" version="1.5.5"/>
697699
<dependency groupId="org.latencyutils" artifactId="LatencyUtils" version="2.0.3"/>
698700
</dependencyManagement>
@@ -773,7 +775,8 @@
773775
<dependency groupId="org.apache.lucene" artifactId="lucene-core"/>
774776
<dependency groupId="com.bpodgursky" artifactId="jbool_expressions" version="1.14" scope="test"/>
775777
<dependency groupId="com.carrotsearch.randomizedtesting" artifactId="randomizedtesting-runner" scope="test"/>
776-
<dependency groupId="org.apache.lucene" artifactId="lucene-analyzers-common"/>
778+
<dependency groupId="com.github.haifengl" artifactId="smile-nlp" scope="test"/>
779+
<dependency groupId="org.apache.lucene" artifactId="lucene-analysis-common"/>
777780
</artifact:pom>
778781

779782
<!-- now the pom's for artifacts being deployed to Maven Central -->
@@ -862,8 +865,9 @@
862865
<dependency groupId="org.agrona" artifactId="agrona"/>
863866
<dependency groupId="org.apache.lucene" artifactId="lucene-core"/>
864867
<dependency groupId="com.bpodgursky" artifactId="jbool_expressions" version="1.23" scope="test"/>
865-
<dependency groupId="org.apache.lucene" artifactId="lucene-analyzers-common"/>
868+
<dependency groupId="org.apache.lucene" artifactId="lucene-analysis-common"/>
866869
<dependency groupId="com.carrotsearch.randomizedtesting" artifactId="randomizedtesting-runner" scope="test"/>
870+
<dependency groupId="com.github.haifengl" artifactId="smile-nlp" scope="test"/>
867871
<dependency groupId="org.hamcrest" artifactId="hamcrest" scope="test"/>
868872
<dependency groupId="com.esri.geometry" artifactId="esri-geometry-api"/>
869873

@@ -1303,7 +1307,7 @@
13031307
<antcall target="build-test"/>
13041308
</target>
13051309

1306-
<target name="build-test" depends="_main-jar,stress-build,fqltool-build,resolver-dist-lib"
1310+
<target name="build-test" depends="_main-jar,stress-build-test,fqltool-build,resolver-dist-lib"
13071311
description="Compile test classes">
13081312
<antcall target="_build-test"/>
13091313
</target>
@@ -1618,7 +1622,7 @@
16181622
<attribute name="test.file.list" />
16191623
<sequential>
16201624
<testmacrohelper inputdir="${test.unit.src}" filelist="@{test.file.list}"
1621-
exclude="**/*.java" timeout="${test.timeout}" testtag="sai-legacy">
1625+
exclude="**/*.java" timeout="${test.timeout}" >
16221626
<jvmarg value="-Dlegacy-sstable-root=${test.data}/legacy-sstables"/>
16231627
<jvmarg value="-Dinvalid-legacy-sstable-root=${test.data}/invalid-legacy-sstables"/>
16241628
<jvmarg value="-Dcassandra.ring_delay_ms=1000"/>
@@ -1630,6 +1634,21 @@
16301634
</sequential>
16311635
</macrodef>
16321636

1637+
<macrodef name="testlist-sai">
1638+
<attribute name="test.file.list" />
1639+
<sequential>
1640+
<testmacrohelper inputdir="\${test.unit.src}" filelist="@{test.file.list}"
1641+
exclude="**/*.java" timeout="\${test.timeout}" testtag="sai-legacy">
1642+
<jvmarg value="-Dlegacy-sstable-root=\${test.data}/legacy-sstables"/>
1643+
<jvmarg value="-Dinvalid-legacy-sstable-root=\${test.data}/invalid-legacy-sstables"/>
1644+
<jvmarg value="-Dcassandra.ring_delay_ms=1000"/>
1645+
<jvmarg value="-Dcassandra.tolerate_sstable_size=true"/>
1646+
<jvmarg value="-Dcassandra.skip_sync=true" />
1647+
<jvmarg value="-Dlogback.configurationFile=file://\${test.logback.configurationFile}"/>
1648+
</testmacrohelper>
1649+
</sequential>
1650+
</macrodef>
1651+
16331652
<!--
16341653
Run named ant task with jacoco, such as "ant jacoco-run -Dtaskname=test"
16351654
the target run must enable the jacoco agent if usejacoco is 'yes' -->
@@ -1731,6 +1750,14 @@
17311750
<testhelper testdelegate="testlist-sai-legacy" />
17321751
</target>
17331752

1753+
<target name="test-sai" depends="build-test" description="Execute SAI unit tests">
1754+
<path id="all-test-classes-path">
1755+
<fileset dir="${test.unit.src}" includes="**/sai/**/${test.name}.java"/>
1756+
</path>
1757+
<property name="all-test-classes" refid="all-test-classes-path"/>
1758+
<testhelper testdelegate="testlist-sai-legacy" />
1759+
</target>
1760+
17341761
<target name="msg-ser-gen-test" depends="build-test" description="Generates message serializations">
17351762
<testmacro inputdir="${test.unit.src}"
17361763
timeout="${test.timeout}" filter="**/SerializationsTest.java">

conf/jvm-server.options

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,6 @@
108108
# transparent hugepage allocation more effective.
109109
-XX:+AlwaysPreTouch
110110

111-
# Disable biased locking as it does not benefit Cassandra.
112-
-XX:-UseBiasedLocking
113-
114111
# Enable thread-local allocation blocks and allow the JVM to automatically
115112
# resize them at runtime.
116113
-XX:+UseTLAB

conf/jvm17-clients.options

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
###########################################################################
2+
# jvm11-clients.options #
3+
# #
4+
# See jvm-clients.options. This file is specific for Java 11 and newer. #
5+
###########################################################################
6+
7+
###################
8+
# JPMS SETTINGS #
9+
###################
10+
11+
-Djdk.attach.allowAttachSelf=true
12+
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
13+
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
14+
--add-exports java.base/sun.nio.ch=ALL-UNNAMED
15+
--add-exports java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED
16+
--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED
17+
--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED
18+
--add-exports java.sql/java.sql=ALL-UNNAMED
19+
20+
--add-opens java.base/java.lang.module=ALL-UNNAMED
21+
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
22+
--add-opens java.base/jdk.internal.ref=ALL-UNNAMED
23+
--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
24+
--add-opens java.base/jdk.internal.math=ALL-UNNAMED
25+
--add-opens java.base/jdk.internal.module=ALL-UNNAMED
26+
--add-opens java.base/jdk.internal.util.jar=ALL-UNNAMED
27+
--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
28+
29+
# The newline in the end of file is intentional

conf/jvm17-server.options

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
###########################################################################
2+
# jvm11-server.options #
3+
# #
4+
# See jvm-server.options. This file is specific for Java 11 and newer. #
5+
###########################################################################
6+
7+
#################
8+
# GC SETTINGS #
9+
#################
10+
11+
12+
13+
### CMS Settings
14+
#-XX:+UseConcMarkSweepGC
15+
#-XX:+CMSParallelRemarkEnabled
16+
#-XX:SurvivorRatio=8
17+
#-XX:MaxTenuringThreshold=1
18+
#-XX:CMSInitiatingOccupancyFraction=75
19+
#-XX:+UseCMSInitiatingOccupancyOnly
20+
#-XX:CMSWaitDuration=10000
21+
#-XX:+CMSParallelInitialMarkEnabled
22+
#-XX:+CMSEdenChunksRecordAlways
23+
## some JVMs will fill up their heap when accessed via JMX, see CASSANDRA-6541
24+
#-XX:+CMSClassUnloadingEnabled
25+
26+
27+
28+
### G1 Settings
29+
## Use the Hotspot garbage-first collector.
30+
-XX:+UseG1GC
31+
-XX:+ParallelRefProcEnabled
32+
33+
#
34+
## Have the JVM do less remembered set work during STW, instead
35+
## preferring concurrent GC. Reduces p99.9 latency.
36+
-XX:G1RSetUpdatingPauseTimePercent=5
37+
#
38+
## Main G1GC tunable: lowering the pause target will lower throughput and vise versa.
39+
## 200ms is the JVM default and lowest viable setting
40+
## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml.
41+
-XX:MaxGCPauseMillis=500
42+
43+
## Optional G1 Settings
44+
# Save CPU time on large (>= 16GB) heaps by delaying region scanning
45+
# until the heap is 70% full. The default in Hotspot 8u40 is 40%.
46+
#-XX:InitiatingHeapOccupancyPercent=70
47+
48+
# For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores.
49+
# Otherwise equal to the number of cores when 8 or less.
50+
# Machines with > 10 cores should try setting these to <= full cores.
51+
#-XX:ParallelGCThreads=16
52+
# By default, ConcGCThreads is 1/4 of ParallelGCThreads.
53+
# Setting both to the same value can reduce STW durations.
54+
#-XX:ConcGCThreads=16
55+
56+
57+
### JPMS
58+
59+
-Djdk.attach.allowAttachSelf=true
60+
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
61+
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
62+
--add-exports java.base/sun.nio.ch=ALL-UNNAMED
63+
--add-exports java.management.rmi/com.sun.jmx.remote.internal.rmi=ALL-UNNAMED
64+
--add-exports java.rmi/sun.rmi.registry=ALL-UNNAMED
65+
--add-exports java.rmi/sun.rmi.server=ALL-UNNAMED
66+
--add-exports java.sql/java.sql=ALL-UNNAMED
67+
68+
--add-opens java.base/java.lang.module=ALL-UNNAMED
69+
--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
70+
--add-opens java.base/jdk.internal.ref=ALL-UNNAMED
71+
--add-opens java.base/jdk.internal.reflect=ALL-UNNAMED
72+
--add-opens java.base/jdk.internal.math=ALL-UNNAMED
73+
--add-opens java.base/jdk.internal.module=ALL-UNNAMED
74+
--add-opens java.base/jdk.internal.util.jar=ALL-UNNAMED
75+
--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
76+
77+
78+
### GC logging options -- uncomment to enable
79+
80+
# Java 11 (and newer) GC logging options:
81+
# See description of https://bugs.openjdk.java.net/browse/JDK-8046148 for details about the syntax
82+
# The following is the equivalent to -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
83+
-Xlog:gc=info,heap*=debug,age*=debug,safepoint=info,promotion*=debug:file=/var/log/cassandra/gc.log:time,uptime,pid,tid,level:filecount=10,filesize=10485760
84+
85+
# Notes for Java 8 migration:
86+
#
87+
# -XX:+PrintGCDetails maps to -Xlog:gc*:... - i.e. add a '*' after "gc"
88+
# -XX:+PrintGCDateStamps maps to decorator 'time'
89+
#
90+
# -XX:+PrintHeapAtGC maps to 'heap' with level 'trace'
91+
# -XX:+PrintTenuringDistribution maps to 'age' with level 'debug'
92+
# -XX:+PrintGCApplicationStoppedTime maps to 'safepoint' with level 'info'
93+
# -XX:+PrintPromotionFailure maps to 'promotion' with level 'trace'
94+
# -XX:PrintFLSStatistics=1 maps to 'freelist' with level 'trace'
95+
96+
### Netty Options
97+
98+
# On Java >= 9 Netty requires the io.netty.tryReflectionSetAccessible system property to be set to true to enable
99+
# creation of direct buffers using Unsafe. Without it, this falls back to ByteBuffer.allocateDirect which has
100+
# inferior performance and risks exceeding MaxDirectMemory
101+
-Dio.netty.tryReflectionSetAccessible=true
102+
103+
### Enable vector incubator feature (simd support)
104+
105+
--add-modules jdk.incubator.vector
106+
107+
### Compatibility Options
108+
--add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED
109+
-Djava.security.manager=allow
110+
111+
# The newline in the end of file is intentional
-337 KB
Binary file not shown.
Binary file not shown.

pylib/cqlshlib/formatting.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,13 @@ def parse(self, typestring, ksmeta):
175175
typestring = m.group(2)
176176
continue
177177

178-
name = m.group(1) # a composite type, parse sub types
179-
return name, self.parse_sub_types(m.group(2), ksmeta), self._get_formatter(name)
178+
name = m.group(1) # a composite or vector type, parse sub types
179+
try:
180+
# Vector types are parameterized as name<type,size> so add custom handling for that here
181+
vector_size = int(m.group(2).split(',')[1])
182+
return name, [CqlType('float') for i in range(vector_size)], self._get_formatter(name)
183+
except ValueError:
184+
return name, self.parse_sub_types(m.group(2), ksmeta), self._get_formatter(name)
180185

181186
@staticmethod
182187
def _get_formatter(name):

src/antlr/Lexer.g

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ K_TOKEN: T O K E N;
179179
K_WRITETIME: W R I T E T I M E;
180180
K_DATE: D A T E;
181181
K_TIME: T I M E;
182+
K_VECTOR: V E C T O R;
182183

183184
K_NULL: N U L L;
184185
K_NOT: N O T;
@@ -223,6 +224,7 @@ K_LABEL: L A B E L;
223224
K_DROPPED: D R O P P E D;
224225
K_COLUMN: C O L U M N;
225226
K_RECORD: R E C O R D;
227+
K_ANN_OF: A N N WS+ O F;
226228

227229
// Case-insensitive alpha characters
228230
fragment A: ('a'|'A');

src/antlr/Parser.g

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ selectStatement returns [SelectStatement.RawStatement expr]
255255
@init {
256256
Term.Raw limit = null;
257257
Term.Raw perPartitionLimit = null;
258-
Map<ColumnIdentifier, Boolean> orderings = new LinkedHashMap<>();
258+
List<Ordering.Raw> orderings = new ArrayList<>();
259259
List<ColumnIdentifier> groups = new ArrayList<>();
260260
boolean allowFiltering = false;
261261
boolean isJson = false;
@@ -455,11 +455,17 @@ customIndexExpression [WhereClause.Builder clause]
455455
: 'expr(' idxName[name] ',' t=term ')' { clause.add(new CustomIndexExpression(name, t));}
456456
;
457457

458-
orderByClause[Map<ColumnIdentifier, Boolean> orderings]
458+
orderByClause[List<Ordering.Raw> orderings]
459459
@init{
460-
boolean reversed = false;
460+
Ordering.Direction direction = Ordering.Direction.ASC;
461+
}
462+
: c=cident (K_ANN_OF t=term)? (K_ASC | K_DESC { direction = Ordering.Direction.DESC; })?
463+
{
464+
Ordering.Raw.Expression expr = (t == null)
465+
? new Ordering.Raw.SingleColumn(c)
466+
: new Ordering.Raw.Ann(c, t);
467+
orderings.add(new Ordering.Raw(expr, direction));
461468
}
462-
: c=cident (K_ASC | K_DESC { reversed = true; })? { orderings.put(c, reversed); }
463469
;
464470

465471
groupByClause[List<ColumnIdentifier> groups]
@@ -1483,8 +1489,8 @@ collectionLiteral returns [Term.Raw value]
14831489
14841490
listLiteral returns [Term.Raw value]
14851491
@init {List<Term.Raw> l = new ArrayList<Term.Raw>();}
1486-
@after {$value = new Lists.Literal(l);}
1487-
: '[' ( t1=term { l.add(t1); } ( ',' tn=term { l.add(tn); } )* )? ']' { $value = new Lists.Literal(l); }
1492+
@after {$value = new ArrayLiteral(l);}
1493+
: '[' ( t1=term { l.add(t1); } ( ',' tn=term { l.add(tn); } )* )? ']'
14881494
;
14891495
14901496
usertypeLiteral returns [UserTypes.Literal ut]
@@ -1757,6 +1763,7 @@ comparatorType returns [CQL3Type.Raw t]
17571763
: n=native_type { $t = CQL3Type.Raw.from(n); }
17581764
| c=collection_type { $t = c; }
17591765
| tt=tuple_type { $t = tt; }
1766+
| vc=vector_type { $t = vc; }
17601767
| id=userTypeName { $t = CQL3Type.Raw.userType(id); }
17611768
| K_FROZEN '<' f=comparatorType '>'
17621769
{
@@ -1821,6 +1828,11 @@ tuple_type returns [CQL3Type.Raw t]
18211828
: K_TUPLE '<' t1=comparatorType { types.add(t1); } (',' tn=comparatorType { types.add(tn); })* '>'
18221829
;
18231830
1831+
vector_type returns [CQL3Type.Raw vt]
1832+
: K_VECTOR '<' t1=comparatorType ',' d=INTEGER '>'
1833+
{ $vt = CQL3Type.Raw.vector(t1, Integer.parseInt($d.text)); }
1834+
;
1835+
18241836
username
18251837
: IDENT
18261838
| STRING_LITERAL
@@ -1887,6 +1899,7 @@ basic_unreserved_keyword returns [String str]
18871899
| K_STATIC
18881900
| K_FROZEN
18891901
| K_TUPLE
1902+
| K_VECTOR
18901903
| K_FUNCTION
18911904
| K_FUNCTIONS
18921905
| K_AGGREGATE
@@ -1916,5 +1929,6 @@ basic_unreserved_keyword returns [String str]
19161929
| K_DROPPED
19171930
| K_COLUMN
19181931
| K_RECORD
1932+
| K_ANN_OF
19191933
) { $str = $k.text; }
19201934
;

0 commit comments

Comments
 (0)