mirror of https://github.com/apache/druid.git
Merge branch '6088-Create-Scan-Benchmark' into 6088-Time-Ordering-On-Scans-V2
This commit is contained in:
commit
7deb06f6df
|
@ -176,30 +176,24 @@ public class ScanBenchmark
|
|||
/* Just get everything */
|
||||
private static Druids.ScanQueryBuilder basicA(final BenchmarkSchemaInfo basicSchema)
|
||||
{
|
||||
final QuerySegmentSpec intervalSpec = new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval()));
|
||||
final QuerySegmentSpec intervalSpec =
|
||||
new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval()));
|
||||
|
||||
return Druids.newScanQueryBuilder()
|
||||
.dataSource("blah")
|
||||
.intervals(intervalSpec)
|
||||
.timeOrder(timeOrdering);
|
||||
|
||||
}
|
||||
|
||||
private static Druids.ScanQueryBuilder basicB(final BenchmarkSchemaInfo basicSchema)
|
||||
{
|
||||
final QuerySegmentSpec intervalSpec = new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval()));
|
||||
|
||||
final List<String> dimUniformFilterVals = new ArrayList<>();
|
||||
int resultNum = (int) (100000 * 0.1);
|
||||
int step = 100000 / resultNum;
|
||||
for (int i = 1; i < 100001 && dimUniformFilterVals.size() < resultNum; i += step) {
|
||||
dimUniformFilterVals.add(String.valueOf(i));
|
||||
}
|
||||
final QuerySegmentSpec intervalSpec =
|
||||
new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval()));
|
||||
|
||||
List<String> dimHyperUniqueFilterVals = new ArrayList<>();
|
||||
resultNum = (int) (100000 * 0.1);
|
||||
step = 100000 / resultNum;
|
||||
for (int i = 0; i < 100001 && dimHyperUniqueFilterVals.size() < resultNum; i += step) {
|
||||
int numResults = (int) (100000 * 0.1);
|
||||
int step = 100000 / numResults;
|
||||
for (int i = 0; i < 100001 && dimHyperUniqueFilterVals.size() < numResults; i += step) {
|
||||
dimHyperUniqueFilterVals.add(String.valueOf(i));
|
||||
}
|
||||
|
||||
|
@ -213,14 +207,8 @@ public class ScanBenchmark
|
|||
|
||||
private static Druids.ScanQueryBuilder basicC(final BenchmarkSchemaInfo basicSchema)
|
||||
{
|
||||
final QuerySegmentSpec intervalSpec = new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval()));
|
||||
|
||||
final List<String> dimUniformFilterVals = new ArrayList<>();
|
||||
final int resultNum = (int) (100000 * 0.1);
|
||||
final int step = 100000 / resultNum;
|
||||
for (int i = 1; i < 100001 && dimUniformFilterVals.size() < resultNum; i += step) {
|
||||
dimUniformFilterVals.add(String.valueOf(i));
|
||||
}
|
||||
final QuerySegmentSpec intervalSpec =
|
||||
new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval()));
|
||||
|
||||
final String dimName = "dimUniform";
|
||||
return Druids.newScanQueryBuilder()
|
||||
|
@ -235,16 +223,8 @@ public class ScanBenchmark
|
|||
Collections.singletonList(basicSchema.getDataInterval())
|
||||
);
|
||||
|
||||
final List<String> dimUniformFilterVals = new ArrayList<>();
|
||||
final int resultNum = (int) (100000 * 0.1);
|
||||
final int step = 100000 / resultNum;
|
||||
for (int i = 1; i < 100001 && dimUniformFilterVals.size() < resultNum; i += step) {
|
||||
dimUniformFilterVals.add(String.valueOf(i));
|
||||
}
|
||||
|
||||
final String dimName = "dimUniform";
|
||||
|
||||
|
||||
return Druids.newScanQueryBuilder()
|
||||
.filters(new BoundDimFilter(dimName, "100", "10000", true, true, true, null, null))
|
||||
.intervals(intervalSpec)
|
||||
|
|
|
@ -95,14 +95,14 @@ public class ScanQueryQueryToolChest extends QueryToolChest<ScanResultValue, Sca
|
|||
if (scanQuery.getLimit() == Long.MAX_VALUE) {
|
||||
return runner.run(queryPlusWithNonNullLegacy, responseContext);
|
||||
}
|
||||
return new BaseSequence<>(scanQueryLimitRowIteratorMaker);
|
||||
return new BaseSequence<ScanResultValue, ScanQueryLimitRowIterator>(scanQueryLimitRowIteratorMaker);
|
||||
} else if (scanQuery.getTimeOrder().equals(ScanQuery.TIME_ORDER_ASCENDING) ||
|
||||
scanQuery.getTimeOrder().equals(ScanQuery.TIME_ORDER_DESCENDING)) {
|
||||
Comparator priorityQComparator = new ScanResultValueTimestampComparator(scanQuery);
|
||||
|
||||
// Converting the limit from long to int could theoretically throw an ArithmeticException but this branch
|
||||
// only runs if limit < MAX_LIMIT_FOR_IN_MEMORY_TIME_ORDERING (which should be < Integer.MAX_VALUE)
|
||||
PriorityQueue q = new PriorityQueue<>(Math.toIntExact(scanQuery.getLimit()), priorityQComparator);
|
||||
PriorityQueue q = new PriorityQueue<ScanResultValue>(Math.toIntExact(scanQuery.getLimit()), priorityQComparator);
|
||||
Iterator<ScanResultValue> scanResultIterator = scanQueryLimitRowIteratorMaker.make();
|
||||
|
||||
while (scanResultIterator.hasNext()) {
|
||||
|
|
Loading…
Reference in New Issue