Fix NullPointerException in ANN+WHERE when adding rows in another partition

patch by Ekaterina Dimitrova; reviewed by Andres de la Pena for CASSANDRA-19404
This commit is contained in:
Ekaterina Dimitrova 2024-02-16 18:38:50 -05:00
parent 106be29feb
commit 54cf65476a
3 changed files with 21 additions and 1 deletions

View File

@ -1,4 +1,5 @@
5.0-beta2
* Fix NullPointerException in ANN+WHERE when adding rows in another partition (CASSANDRA-19404)
* Record latencies for SAI post-filtering reads against local storage (CASSANDRA-18940)
* Fix VectorMemoryIndex#update logic to compare vectors. Fix Index view (CASSANDRA-19168)
* Deprecate native_transport_port_ssl (CASSANDRA-19392)

View File

@ -81,7 +81,8 @@ public class KeyRangeOrderingIterator extends KeyRangeIterator
protected void performSkipTo(PrimaryKey nextToken)
{
input.skipTo(nextToken);
nextIterator.skipTo(nextToken);
if (nextIterator != null)
nextIterator.skipTo(nextToken);
}
public void close()

View File

@ -657,4 +657,22 @@ public class VectorTypeTest extends VectorTester
assertRowsIgnoringOrder(execute("SELECT pk FROM %s WHERE val = 'match me' ORDER BY vec ANN OF [1,1] LIMIT 5"),
row(1), row(2), row(3), row(4), row(5));
}
@Test
public void multiPartitionUpdateMultiIndexTest()
{
createTable("CREATE TABLE %s (pk int, row_v vector<float, 2>, metadata map<text, text>, PRIMARY KEY(pk))");
createIndex("CREATE CUSTOM INDEX ON %s(entries(metadata)) USING 'StorageAttachedIndex'");
createIndex("CREATE CUSTOM INDEX ON %s(row_v) USING 'StorageAttachedIndex'");
String select = "SELECT * FROM %s WHERE metadata['map_k'] = 'map_v' AND pk = 0 ORDER BY row_v ann of [0.1, 0.2] LIMIT 4";
assertRows(execute(select));
execute("INSERT INTO %s (pk, metadata, row_v) VALUES (0, {'map_k' : 'map_v'}, [0.11, 0.19])");
Object[] row = row(0, map("map_k", "map_v"), vector(0.11f, 0.19f));
assertRows(execute(select), row);
execute("INSERT INTO %s (pk, metadata, row_v) VALUES (10, {'map_k' : 'map_v'}, [0.11, 0.19])");
assertRows(execute(select), row);
}
}