You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by gi...@apache.org on 2022/04/04 22:11:37 UTC
[druid] branch master updated: Method to specify eternity in the scan query builder (#12223)
This is an automated email from the ASF dual-hosted git repository.
gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 2cc2088720 Method to specify eternity in the scan query builder (#12223)
2cc2088720 is described below
commit 2cc2088720e82339ecbe1a510b6312f3aa9d4c23
Author: Paul Rogers <pa...@users.noreply.github.com>
AuthorDate: Mon Apr 4 15:11:32 2022 -0700
Method to specify eternity in the scan query builder (#12223)
* Method to specify eternity in the scan query builder
* Fix checkstyle issue
* Renamed eterity() to eternityInterval()
* Minor fixes
---
.../main/java/org/apache/druid/query/Druids.java | 37 ++++++++++------------
.../druid/query/scan/ScanQueryRunnerTest.java | 2 +-
.../druid/server/ClientQuerySegmentWalkerTest.java | 18 +++--------
.../druid/sql/calcite/CalciteJoinQueryTest.java | 4 +--
.../calcite/CalciteMultiValueStringQueryTest.java | 18 +++++------
5 files changed, 32 insertions(+), 47 deletions(-)
diff --git a/processing/src/main/java/org/apache/druid/query/Druids.java b/processing/src/main/java/org/apache/druid/query/Druids.java
index 31a4791932..6b7739ab66 100644
--- a/processing/src/main/java/org/apache/druid/query/Druids.java
+++ b/processing/src/main/java/org/apache/druid/query/Druids.java
@@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
+import org.apache.druid.java.util.common.Intervals;
import org.apache.druid.java.util.common.granularity.Granularities;
import org.apache.druid.java.util.common.granularity.Granularity;
import org.apache.druid.query.aggregation.AggregatorFactory;
@@ -45,6 +46,7 @@ import org.apache.druid.query.search.SearchQuery;
import org.apache.druid.query.search.SearchQuerySpec;
import org.apache.druid.query.search.SearchSortSpec;
import org.apache.druid.query.spec.LegacySegmentSpec;
+import org.apache.druid.query.spec.MultipleIntervalSegmentSpec;
import org.apache.druid.query.spec.QuerySegmentSpec;
import org.apache.druid.query.timeboundary.TimeBoundaryQuery;
import org.apache.druid.query.timeseries.TimeseriesQuery;
@@ -775,9 +777,9 @@ public class Druids
* Usage example:
* <pre><code>
* ScanQuery query = new ScanQueryBuilder()
- * .dataSource("Example")
- * .interval("2010/2013")
- * .build();
+ * .dataSource("Example")
+ * .eternityInterval()
+ * .build();
* </code></pre>
*
* @see ScanQuery
@@ -793,28 +795,11 @@ public class Druids
private long offset;
private long limit;
private DimFilter dimFilter;
- private List<String> columns;
+ private List<String> columns = new ArrayList<>();
private Boolean legacy;
private ScanQuery.Order order;
private List<ScanQuery.OrderBy> orderBy;
- public ScanQueryBuilder()
- {
- dataSource = null;
- querySegmentSpec = null;
- virtualColumns = null;
- context = null;
- resultFormat = null;
- batchSize = 0;
- offset = 0;
- limit = 0;
- dimFilter = null;
- columns = new ArrayList<>();
- legacy = null;
- order = null;
- orderBy = null;
- }
-
public ScanQuery build()
{
return new ScanQuery(
@@ -869,6 +854,16 @@ public class Druids
return this;
}
+ /**
+ * Convenience method for an interval over all time.
+ */
+ public ScanQueryBuilder eternityInterval()
+ {
+ return intervals(
+ new MultipleIntervalSegmentSpec(
+ ImmutableList.of(Intervals.ETERNITY)));
+ }
+
public ScanQueryBuilder virtualColumns(VirtualColumns virtualColumns)
{
this.virtualColumns = virtualColumns;
diff --git a/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java
index 432befb995..abd3f78f55 100644
--- a/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java
+++ b/processing/src/test/java/org/apache/druid/query/scan/ScanQueryRunnerTest.java
@@ -197,7 +197,7 @@ public class ScanQueryRunnerTest extends InitializedNullHandlingTest
return Druids.newScanQueryBuilder()
.dataSource(new TableDataSource(QueryRunnerTestHelper.DATA_SOURCE))
.columns(Collections.emptyList())
- .intervals(QueryRunnerTestHelper.FULL_ON_INTERVAL_SPEC)
+ .eternityInterval()
.limit(3)
.legacy(legacy);
}
diff --git a/server/src/test/java/org/apache/druid/server/ClientQuerySegmentWalkerTest.java b/server/src/test/java/org/apache/druid/server/ClientQuerySegmentWalkerTest.java
index a912ac6fb3..8d2713068c 100644
--- a/server/src/test/java/org/apache/druid/server/ClientQuerySegmentWalkerTest.java
+++ b/server/src/test/java/org/apache/druid/server/ClientQuerySegmentWalkerTest.java
@@ -59,7 +59,6 @@ import org.apache.druid.query.groupby.GroupByQueryConfig;
import org.apache.druid.query.groupby.GroupByQueryHelper;
import org.apache.druid.query.groupby.strategy.GroupByStrategyV2;
import org.apache.druid.query.scan.ScanQuery;
-import org.apache.druid.query.spec.MultipleIntervalSegmentSpec;
import org.apache.druid.query.timeseries.TimeseriesQuery;
import org.apache.druid.query.topn.TopNQuery;
import org.apache.druid.query.topn.TopNQueryBuilder;
@@ -638,11 +637,7 @@ public class ClientQuerySegmentWalkerTest
{
ScanQuery subquery = new Druids.ScanQueryBuilder().dataSource(MULTI)
.columns("s", "n")
- .intervals(
- new MultipleIntervalSegmentSpec(
- ImmutableList.of(Intervals.ETERNITY)
- )
- )
+ .eternityInterval()
.legacy(false)
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
.build();
@@ -693,11 +688,7 @@ public class ClientQuerySegmentWalkerTest
{
ScanQuery subquery = new Druids.ScanQueryBuilder().dataSource(MULTI)
.columns("s", "n")
- .intervals(
- new MultipleIntervalSegmentSpec(
- ImmutableList.of(Intervals.ETERNITY)
- )
- )
+ .eternityInterval()
.legacy(false)
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
.build();
@@ -1024,7 +1015,6 @@ public class ClientQuerySegmentWalkerTest
);
}
-
@Test
public void testGroupByOnArraysUnknownStrings()
{
@@ -1469,12 +1459,12 @@ public class ClientQuerySegmentWalkerTest
this.how = how;
}
- static ExpectedQuery local(final Query query)
+ static ExpectedQuery local(final Query<?> query)
{
return new ExpectedQuery(query, ClusterOrLocal.LOCAL);
}
- static ExpectedQuery cluster(final Query query)
+ static ExpectedQuery cluster(final Query<?> query)
{
return new ExpectedQuery(query, ClusterOrLocal.CLUSTER);
}
diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteJoinQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteJoinQueryTest.java
index e7e24c159d..2f58c6cd79 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteJoinQueryTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteJoinQueryTest.java
@@ -2924,7 +2924,7 @@ public class CalciteJoinQueryTest extends BaseCalciteQueryTest
new QueryDataSource(
newScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE1)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.filters(new SelectorDimFilter("dim1", "10.1", null))
.virtualColumns(expressionVirtualColumn("v0", "\'10.1\'", ColumnType.STRING))
.columns(ImmutableList.of("__time", "v0"))
@@ -2935,7 +2935,7 @@ public class CalciteJoinQueryTest extends BaseCalciteQueryTest
new QueryDataSource(
newScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE1)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.filters(new SelectorDimFilter("dim1", "10.1", null))
.columns(ImmutableList.of("dim1"))
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteMultiValueStringQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteMultiValueStringQueryTest.java
index 5a6e9208d2..0c0937d35f 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteMultiValueStringQueryTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteMultiValueStringQueryTest.java
@@ -182,7 +182,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
new Druids.ScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.virtualColumns(expressionVirtualColumn("v0", "concat(\"dim3\",'foo')", ColumnType.STRING))
.columns(ImmutableList.of("v0"))
.context(QUERY_CONTEXT_DEFAULT)
@@ -210,7 +210,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
new Druids.ScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.virtualColumns(expressionVirtualColumn("v0", "concat(\"dim3\",'-lol-',\"dim3\")", ColumnType.STRING))
.columns(ImmutableList.of("v0"))
.context(QUERY_CONTEXT_DEFAULT)
@@ -237,7 +237,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
new Druids.ScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.virtualColumns(expressionVirtualColumn("v0", "concat(\"dim3\",'foo')", ColumnType.STRING))
.filters(selector("v0", "bfoo", null))
.columns(ImmutableList.of("v0"))
@@ -262,7 +262,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
newScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.filters(new InDimFilter("dim3", ImmutableList.of("a", "b"), null))
.columns("dim3")
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
@@ -285,7 +285,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
newScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.filters(expressionFilter("array_overlap(\"dim3\",array(\"dim2\"))"))
.columns("dim3")
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
@@ -305,7 +305,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
newScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.filters(
new AndDimFilter(
new SelectorDimFilter("dim3", "a", null),
@@ -332,7 +332,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
newScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.filters(new SelectorDimFilter("dim3", "a", null))
.columns("dim3")
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
@@ -354,7 +354,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
newScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.filters(expressionFilter("array_contains(\"dim3\",array(\"dim2\"))"))
.columns("dim3")
.resultFormat(ScanQuery.ResultFormat.RESULT_FORMAT_COMPACTED_LIST)
@@ -376,7 +376,7 @@ public class CalciteMultiValueStringQueryTest extends BaseCalciteQueryTest
ImmutableList.of(
new Druids.ScanQueryBuilder()
.dataSource(CalciteTests.DATASOURCE3)
- .intervals(querySegmentSpec(Filtration.eternity()))
+ .eternityInterval()
.virtualColumns(expressionVirtualColumn("v0", "array_slice(\"dim3\",1)", ColumnType.STRING))
.columns(ImmutableList.of("v0"))
.context(QUERY_CONTEXT_DEFAULT)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org