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 <ankitsult...@uber.com>
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: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to