This is an automated email from the ASF dual-hosted git repository.
ankitsultana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 4257bcb703 Fix Bug in Handling Empty Filters in Time Series (#14192)
4257bcb703 is described below
commit 4257bcb703fda2c78287254dbc5c120804510e36
Author: Ankit Sultana <[email protected]>
AuthorDate: Wed Oct 9 13:13:29 2024 -0500
Fix Bug in Handling Empty Filters in Time Series (#14192)
---
.../core/operator/timeseries/TimeSeriesAggregationOperator.java | 4 ++++
.../pinot/core/query/request/context/utils/QueryContextUtils.java | 4 ++--
.../java/org/apache/pinot/tsdb/spi/plan/LeafTimeSeriesPlanNode.java | 5 +++--
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/operator/timeseries/TimeSeriesAggregationOperator.java
b/pinot-core/src/main/java/org/apache/pinot/core/operator/timeseries/TimeSeriesAggregationOperator.java
index ca2b7a7009..b55605589b 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/operator/timeseries/TimeSeriesAggregationOperator.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/operator/timeseries/TimeSeriesAggregationOperator.java
@@ -83,6 +83,10 @@ public class TimeSeriesAggregationOperator extends
BaseOperator<TimeSeriesResult
@Override
protected TimeSeriesResultsBlock getNextBlock() {
ValueBlock transformBlock = _projectOperator.nextBlock();
+ if (transformBlock == null) {
+ TimeSeriesBuilderBlock builderBlock = new
TimeSeriesBuilderBlock(_timeBuckets, new HashMap<>());
+ return new TimeSeriesResultsBlock(builderBlock);
+ }
BlockValSet blockValSet = transformBlock.getBlockValueSet(_timeColumn);
long[] timeValues = blockValSet.getLongValuesSV();
if (_timeOffset != null && _timeOffset != 0L) {
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/query/request/context/utils/QueryContextUtils.java
b/pinot-core/src/main/java/org/apache/pinot/core/query/request/context/utils/QueryContextUtils.java
index c7f02eab76..fa7f53e314 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/query/request/context/utils/QueryContextUtils.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/query/request/context/utils/QueryContextUtils.java
@@ -35,7 +35,7 @@ public class QueryContextUtils {
* Returns {@code true} if the given query is a selection query, {@code
false} otherwise.
*/
public static boolean isSelectionQuery(QueryContext query) {
- return !query.isDistinct() && query.getAggregationFunctions() == null;
+ return !query.isDistinct() && query.getAggregationFunctions() == null &&
!isTimeSeriesQuery(query);
}
/**
@@ -51,7 +51,7 @@ public class QueryContextUtils {
* Returns {@code true} if the given query is an aggregation query, {@code
false} otherwise.
*/
public static boolean isAggregationQuery(QueryContext query) {
- return query.getAggregationFunctions() != null;
+ return query.getAggregationFunctions() != null &&
!isTimeSeriesQuery(query);
}
/**
diff --git
a/pinot-timeseries/pinot-timeseries-spi/src/main/java/org/apache/pinot/tsdb/spi/plan/LeafTimeSeriesPlanNode.java
b/pinot-timeseries/pinot-timeseries-spi/src/main/java/org/apache/pinot/tsdb/spi/plan/LeafTimeSeriesPlanNode.java
index c5f438596c..e563508450 100644
---
a/pinot-timeseries/pinot-timeseries-spi/src/main/java/org/apache/pinot/tsdb/spi/plan/LeafTimeSeriesPlanNode.java
+++
b/pinot-timeseries/pinot-timeseries-spi/src/main/java/org/apache/pinot/tsdb/spi/plan/LeafTimeSeriesPlanNode.java
@@ -36,7 +36,6 @@ import
org.apache.pinot.tsdb.spi.operator.BaseTimeSeriesOperator;
* the time filter based on the computed time buckets in {@link
TimeSeriesLogicalPlanner}.
*/
public class LeafTimeSeriesPlanNode extends BaseTimeSeriesPlanNode {
- private static final String EXPLAIN_NAME = "LEAF_TIME_SERIES_PLAN_NODE";
private final String _tableName;
private final String _timeColumn;
private final TimeUnit _timeUnit;
@@ -72,7 +71,9 @@ public class LeafTimeSeriesPlanNode extends
BaseTimeSeriesPlanNode {
@Override
public String getExplainName() {
- return EXPLAIN_NAME;
+ return String.format("LEAF_TIME_SERIES_PLAN_NODE(%s, table=%s,
timeExpr=%s, valueExpr=%s, aggInfo=%s, "
+ + "groupBy=%s, filter=%s, offsetSeconds=%s)", _id, _tableName,
_timeColumn, _valueExpression,
+ _aggInfo.getAggFunction(), _groupByExpressions, _filterExpression,
_offsetSeconds);
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]