You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by as...@apache.org on 2019/01/18 02:41:07 UTC
[incubator-druid] branch master updated: Fix fallback to
cursor-based plan in UseIndexesStrategy (#6875)
This is an automated email from the ASF dual-hosted git repository.
asdf2014 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git
The following commit(s) were added to refs/heads/master by this push:
new cc06e7e Fix fallback to cursor-based plan in UseIndexesStrategy (#6875)
cc06e7e is described below
commit cc06e7e2dff26689a1520fdcddd879ba8e8821ec
Author: Jihoon Son <ji...@apache.org>
AuthorDate: Thu Jan 17 18:41:01 2019 -0800
Fix fallback to cursor-based plan in UseIndexesStrategy (#6875)
* Fix fallback to cursor-based plan in UseIndexesStrategy
* fix build
* add a comment
---
.../apache/druid/query/search/UseIndexesStrategy.java | 14 +++++++-------
.../query/search/SearchQueryRunnerWithCaseTest.java | 18 ++++++++++++++++++
2 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/processing/src/main/java/org/apache/druid/query/search/UseIndexesStrategy.java b/processing/src/main/java/org/apache/druid/query/search/UseIndexesStrategy.java
index 6bb7a09..8c559cd 100644
--- a/processing/src/main/java/org/apache/druid/query/search/UseIndexesStrategy.java
+++ b/processing/src/main/java/org/apache/druid/query/search/UseIndexesStrategy.java
@@ -72,8 +72,8 @@ public class UseIndexesStrategy extends SearchStrategy
final List<DimensionSpec> searchDims = getDimsToSearch(adapter.getAvailableDimensions(), query.getDimensions());
if (index != null) {
- final Pair<List<DimensionSpec>, List<DimensionSpec>> pair = // pair of bitmap dims and non-bitmap dims
- partitionDimensionList(adapter, searchDims);
+ // pair of bitmap dims and non-bitmap dims
+ final Pair<List<DimensionSpec>, List<DimensionSpec>> pair = partitionDimensionList(adapter, searchDims);
final List<DimensionSpec> bitmapSuppDims = pair.lhs;
final List<DimensionSpec> nonBitmapSuppDims = pair.rhs;
@@ -108,7 +108,10 @@ public class UseIndexesStrategy extends SearchStrategy
return builder.build();
}
- // Split dimension list into bitmap-supporting list and non-bitmap supporting list
+ /**
+ * Split the given dimensions list into bitmap-supporting dimensions and non-bitmap supporting ones.
+ * Note that the returned lists are free to modify.
+ */
private static Pair<List<DimensionSpec>, List<DimensionSpec>> partitionDimensionList(
StorageAdapter adapter,
List<DimensionSpec> dimensions
@@ -134,10 +137,7 @@ public class UseIndexesStrategy extends SearchStrategy
}
}
- return new Pair<List<DimensionSpec>, List<DimensionSpec>>(
- ImmutableList.copyOf(bitmapDims),
- ImmutableList.copyOf(nonBitmapDims)
- );
+ return new Pair<>(bitmapDims, nonBitmapDims);
}
static ImmutableBitmap makeTimeFilteredBitmap(
diff --git a/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java b/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java
index cc3b13a..ef0ef61 100644
--- a/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java
+++ b/processing/src/test/java/org/apache/druid/query/search/SearchQueryRunnerWithCaseTest.java
@@ -25,6 +25,7 @@ import com.google.common.io.CharSource;
import org.apache.druid.java.util.common.DateTimes;
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.query.Druids;
+import org.apache.druid.query.Druids.SearchQueryBuilder;
import org.apache.druid.query.QueryPlus;
import org.apache.druid.query.QueryRunner;
import org.apache.druid.query.Result;
@@ -234,6 +235,23 @@ public class SearchQueryRunnerWithCaseTest
checkSearchQuery(searchQuery, expectedResults);
}
+ @Test
+ public void testFallbackToCursorBasedPlan()
+ {
+ final SearchQueryBuilder builder = testBuilder();
+ final SearchQuery query = builder.filters("qualityLong", "1000").build();
+ final Map<String, Set<String>> expectedResults = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ expectedResults.put("qualityLong", Sets.newHashSet("1000"));
+ expectedResults.put("qualityDouble", Sets.newHashSet("10000.0"));
+ expectedResults.put("qualityFloat", Sets.newHashSet("10000.0"));
+ expectedResults.put("qualityNumericString", Sets.newHashSet("100000"));
+ expectedResults.put("quality", Sets.newHashSet("AutoMotive", "automotive"));
+ expectedResults.put("placement", Sets.newHashSet("PREFERRED", "preferred"));
+ expectedResults.put("placementish", Sets.newHashSet("a", "preferred"));
+ expectedResults.put("market", Sets.newHashSet("spot"));
+ checkSearchQuery(query, expectedResults);
+ }
+
private void checkSearchQuery(SearchQuery searchQuery, Map<String, Set<String>> expectedResults)
{
HashMap<String, List> context = new HashMap<>();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org