From 169d4eb57a5bf6475d039e3c8f65f524b2f57766 Mon Sep 17 00:00:00 2001 From: Ryan Caudy Date: Thu, 2 May 2024 11:03:51 -0400 Subject: [PATCH] Test for null result in DataIndexer.getOptimalPartialIndex (#5449) --- .../deephaven/engine/table/impl/indexer/DataIndexer.java | 2 +- .../deephaven/engine/table/impl/QueryTableWhereTest.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/engine/table/src/main/java/io/deephaven/engine/table/impl/indexer/DataIndexer.java b/engine/table/src/main/java/io/deephaven/engine/table/impl/indexer/DataIndexer.java index 98c85a7c6cf..541c46545e0 100644 --- a/engine/table/src/main/java/io/deephaven/engine/table/impl/indexer/DataIndexer.java +++ b/engine/table/src/main/java/io/deephaven/engine/table/impl/indexer/DataIndexer.java @@ -252,7 +252,7 @@ public static DataIndex getOptimalPartialIndex(Table table, final String... keyC .filter(Objects::nonNull) .max(Comparator.comparingLong(dataIndex -> dataIndex.table().size())) .orElse(null), - table::isRefreshing, DataIndex::isRefreshing); + table::isRefreshing, (final DataIndex result) -> result != null && result.isRefreshing()); } /** diff --git a/engine/table/src/test/java/io/deephaven/engine/table/impl/QueryTableWhereTest.java b/engine/table/src/test/java/io/deephaven/engine/table/impl/QueryTableWhereTest.java index e4bd2b2cb10..65343454965 100644 --- a/engine/table/src/test/java/io/deephaven/engine/table/impl/QueryTableWhereTest.java +++ b/engine/table/src/test/java/io/deephaven/engine/table/impl/QueryTableWhereTest.java @@ -318,6 +318,15 @@ private void testWhereInDependencyInternal( } } + @Test + public void testWhereInOptimalIndexSelectionWithNoneAvailable() { + final Table lhs = emptyTable(10).update("Part=ii % 2 == 0 ? `Apple` : `Pie`", "Hello=ii", "Goodbye = `A`+ii"); + DataIndexer.getOrCreateDataIndex(lhs, "Part"); + final Table rhs = emptyTable(2).update("Hello=ii", "Goodbye = `A`+ii"); + final Table result = lhs.whereIn(rhs, "Goodbye"); + assertTableEquals(lhs.head(2), result); + } + @Test public void testWhereDynamicIn() { final QueryTable setTable = testRefreshingTable(i(2, 4, 6, 8).toTracking(), col("X", "A", "B", "C", "B"));