You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ja...@apache.org on 2019/10/01 02:16:32 UTC

[incubator-pinot] branch get_dictionary_api created (now c3aefc9)

This is an automated email from the ASF dual-hosted git repository.

jackie pushed a change to branch get_dictionary_api
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git.


      at c3aefc9  Make TransformFunction.getDictionary() API consistent with DataSource.getDictionary()

This branch includes the following new commits:

     new c3aefc9  Make TransformFunction.getDictionary() API consistent with DataSource.getDictionary()

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[incubator-pinot] 01/01: Make TransformFunction.getDictionary() API consistent with DataSource.getDictionary()

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jackie pushed a commit to branch get_dictionary_api
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit c3aefc9a6822cdd96aee61b797e231b179832636
Author: Jackie (Xiaotian) Jiang <xa...@linkedin.com>
AuthorDate: Mon Sep 30 19:14:57 2019 -0700

    Make TransformFunction.getDictionary() API consistent with DataSource.getDictionary()
    
    If dictionary does not exist, return null instead of throw exception.
    Add javadoc to the TransformFunction and DataSource interface for the behavior.
---
 .../org/apache/pinot/core/common/DataSource.java   | 16 ++++-
 .../operator/filter/ExpressionFilterOperator.java  | 32 ++++-----
 .../core/operator/transform/TransformOperator.java |  5 +-
 .../transform/function/BaseTransformFunction.java  | 75 ++++++++++------------
 .../function/MapValueTransformFunction.java        | 11 ++--
 .../transform/function/TransformFunction.java      |  3 +-
 .../function/ValueInTransformFunction.java         | 28 ++++----
 .../index/data/source/ColumnDataSource.java        |  8 +--
 .../v2/store/StarTreeDimensionDataSource.java      | 10 +--
 .../v2/store/StarTreeMetricDataSource.java         |  4 +-
 10 files changed, 99 insertions(+), 93 deletions(-)

diff --git a/pinot-core/src/main/java/org/apache/pinot/core/common/DataSource.java b/pinot-core/src/main/java/org/apache/pinot/core/common/DataSource.java
index f7e5728..3d2ff54 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/common/DataSource.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/common/DataSource.java
@@ -26,11 +26,23 @@ import org.apache.pinot.core.segment.index.readers.InvertedIndexReader;
 
 public abstract class DataSource extends BaseOperator {
 
+  /**
+   * Returns the metadata for the data source.
+   */
   public abstract DataSourceMetadata getDataSourceMetadata();
 
-  public abstract InvertedIndexReader getInvertedIndex();
-
+  /**
+   * Returns the dictionary for the data source if the data is dictionary-encoded, or {@code null} if not.
+   */
   public abstract Dictionary getDictionary();
 
+  /**
+   * Returns the inverted index for the data source if exists, or {@code null} if not.
+   */
+  public abstract InvertedIndexReader getInvertedIndex();
+
+  /**
+   * Returns the bloom filter for the data source if exists, or {@code null} if not.
+   */
   public abstract BloomFilterReader getBloomFilter();
 }
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/filter/ExpressionFilterOperator.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/filter/ExpressionFilterOperator.java
index 09ac638..57fd917 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/filter/ExpressionFilterOperator.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/filter/ExpressionFilterOperator.java
@@ -45,38 +45,34 @@ import org.apache.pinot.core.operator.transform.TransformResultMetadata;
 import org.apache.pinot.core.operator.transform.function.TransformFunction;
 import org.apache.pinot.core.operator.transform.function.TransformFunctionFactory;
 import org.apache.pinot.core.plan.DocIdSetPlanNode;
-import org.apache.pinot.core.segment.index.readers.Dictionary;
 import org.roaringbitmap.IntIterator;
 import org.roaringbitmap.buffer.MutableRoaringBitmap;
 
 
 public class ExpressionFilterOperator extends BaseFilterOperator {
   private static final String OPERATOR_NAME = "ExpressionFilterOperator";
+
   private final int _numDocs;
-  private TransformFunction _transformFunction;
-  private final PredicateEvaluator _predicateEvaluator;
-  private final TransformResultMetadata _resultMetadata;
+  private final TransformExpressionTree _expression;
   private final Map<String, DataSource> _dataSourceMap;
-  private TransformExpressionTree _expression;
+  private final TransformResultMetadata _expressionMetadata;
+  private final PredicateEvaluator _predicateEvaluator;
 
   public ExpressionFilterOperator(IndexSegment segment, TransformExpressionTree expression, Predicate predicate) {
+    _numDocs = segment.getSegmentMetadata().getTotalRawDocs();
     _expression = expression;
+
+    _dataSourceMap = new HashMap<>();
     Set<String> columns = new HashSet<>();
     expression.getColumns(columns);
-    _dataSourceMap = new HashMap<>();
     for (String column : columns) {
       _dataSourceMap.put(column, segment.getDataSource(column));
     }
-    _transformFunction = TransformFunctionFactory.get(expression, _dataSourceMap);
-    _resultMetadata = _transformFunction.getResultMetadata();
 
-    Dictionary dictionary = null;
-    if (_resultMetadata.hasDictionary()) {
-      dictionary = _transformFunction.getDictionary();
-    }
-    _predicateEvaluator =
-        PredicateEvaluatorProvider.getPredicateEvaluator(predicate, dictionary, _resultMetadata.getDataType());
-    _numDocs = segment.getSegmentMetadata().getTotalRawDocs();
+    TransformFunction transformFunction = TransformFunctionFactory.get(expression, _dataSourceMap);
+    _expressionMetadata = transformFunction.getResultMetadata();
+    _predicateEvaluator = PredicateEvaluatorProvider
+        .getPredicateEvaluator(predicate, transformFunction.getDictionary(), _expressionMetadata.getDataType());
   }
 
   @Override
@@ -149,7 +145,7 @@ public class ExpressionFilterOperator extends BaseFilterOperator {
 
     public ExpressionFilterBlockDocIdSet(ExpressionFilterOperator expressionFilterOperator) {
       _expressionFilterOperator = expressionFilterOperator;
-      if (expressionFilterOperator._resultMetadata.isSingleValue()) {
+      if (expressionFilterOperator._expressionMetadata.isSingleValue()) {
         _blockDocIdIterator = new ExpressionSVBlockDocIdIterator(_expressionFilterOperator);
       } else {
         throw new UnsupportedOperationException("Filter on expressions that return multi-values is not yet supported");
@@ -307,7 +303,7 @@ public class ExpressionFilterOperator extends BaseFilterOperator {
           int length = docIdSetBlock.getSearchableLength();
           _numDocsScanned += length;
           BlockValSet blockValueSet = transformBlock.getBlockValueSet(_expressionFilterOperator._expression);
-          if (_expressionFilterOperator._resultMetadata.hasDictionary()) {
+          if (_expressionFilterOperator._expressionMetadata.hasDictionary()) {
             int[] dictionaryIdsSV = blockValueSet.getDictionaryIdsSV();
             for (int i = 0; i < length; i++) {
               if (_expressionFilterOperator._predicateEvaluator.applySV(dictionaryIdsSV[i])) {
@@ -315,7 +311,7 @@ public class ExpressionFilterOperator extends BaseFilterOperator {
               }
             }
           } else {
-            switch (_expressionFilterOperator._resultMetadata.getDataType()) {
+            switch (_expressionFilterOperator._expressionMetadata.getDataType()) {
               case INT:
                 int[] intValuesSV = blockValueSet.getIntValuesSV();
                 for (int i = 0; i < length; i++) {
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/TransformOperator.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/TransformOperator.java
index 6efbff6..9d41ca8 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/TransformOperator.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/TransformOperator.java
@@ -78,9 +78,8 @@ public class TransformOperator extends BaseOperator<TransformBlock> {
   }
 
   /**
-   * Returns the dictionary associated with the given expression.
-   * <p>Should be called only if {@link #getResultMetadata(TransformExpressionTree)} indicates that the transform result
-   * has dictionary.
+   * Returns the dictionary associated with the given expression if the transform result is dictionary-encoded, or
+   * {@code null} if not.
    *
    * @return Dictionary
    */
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java
index 59ba99e..ef3fd94 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java
@@ -52,7 +52,7 @@ public abstract class BaseTransformFunction implements TransformFunction {
 
   @Override
   public Dictionary getDictionary() {
-    throw new UnsupportedOperationException();
+    return null;
   }
 
   @Override
@@ -72,12 +72,12 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[] dictIds = transformToDictIdsSV(projectionBlock);
-      getDictionary().readIntValues(dictIds, length, _intValuesSV);
+      dictionary.readIntValues(dictIds, length, _intValuesSV);
     } else {
-      switch (resultMetadata.getDataType()) {
+      switch (getResultMetadata().getDataType()) {
         case LONG:
           long[] longValues = transformToLongValuesSV(projectionBlock);
           ArrayCopyUtils.copy(longValues, _intValuesSV, length);
@@ -108,12 +108,12 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[] dictIds = transformToDictIdsSV(projectionBlock);
-      getDictionary().readLongValues(dictIds, length, _longValuesSV);
+      dictionary.readLongValues(dictIds, length, _longValuesSV);
     } else {
-      switch (resultMetadata.getDataType()) {
+      switch (getResultMetadata().getDataType()) {
         case INT:
           int[] intValues = transformToIntValuesSV(projectionBlock);
           ArrayCopyUtils.copy(intValues, _longValuesSV, length);
@@ -144,12 +144,12 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[] dictIds = transformToDictIdsSV(projectionBlock);
-      getDictionary().readFloatValues(dictIds, length, _floatValuesSV);
+      dictionary.readFloatValues(dictIds, length, _floatValuesSV);
     } else {
-      switch (resultMetadata.getDataType()) {
+      switch (getResultMetadata().getDataType()) {
         case INT:
           int[] intValues = transformToIntValuesSV(projectionBlock);
           ArrayCopyUtils.copy(intValues, _floatValuesSV, length);
@@ -180,12 +180,12 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[] dictIds = transformToDictIdsSV(projectionBlock);
-      getDictionary().readDoubleValues(dictIds, length, _doubleValuesSV);
+      dictionary.readDoubleValues(dictIds, length, _doubleValuesSV);
     } else {
-      switch (resultMetadata.getDataType()) {
+      switch (getResultMetadata().getDataType()) {
         case INT:
           int[] intValues = transformToIntValuesSV(projectionBlock);
           ArrayCopyUtils.copy(intValues, _doubleValuesSV, length);
@@ -216,12 +216,12 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[] dictIds = transformToDictIdsSV(projectionBlock);
-      getDictionary().readStringValues(dictIds, length, _stringValuesSV);
+      dictionary.readStringValues(dictIds, length, _stringValuesSV);
     } else {
-      switch (resultMetadata.getDataType()) {
+      switch (getResultMetadata().getDataType()) {
         case INT:
           int[] intValues = transformToIntValuesSV(projectionBlock);
           ArrayCopyUtils.copy(intValues, _stringValuesSV, length);
@@ -255,12 +255,12 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[] dictIds = transformToDictIdsSV(projectionBlock);
-      getDictionary().readBytesValues(dictIds, length, _byteValuesSV);
+      dictionary.readIntValues(dictIds, length, _intValuesSV);
     } else {
-      Preconditions.checkState(resultMetadata.getDataType() == DataType.STRING);
+      Preconditions.checkState(getResultMetadata().getDataType() == DataType.STRING);
       String[] stringValues = transformToStringValuesSV(projectionBlock);
       ArrayCopyUtils.copy(stringValues, _byteValuesSV, length);
     }
@@ -274,10 +274,9 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[][] dictIdsMV = transformToDictIdsMV(projectionBlock);
-      Dictionary dictionary = getDictionary();
       for (int i = 0; i < length; i++) {
         int[] dictIds = dictIdsMV[i];
         int numValues = dictIds.length;
@@ -341,10 +340,9 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[][] dictIdsMV = transformToDictIdsMV(projectionBlock);
-      Dictionary dictionary = getDictionary();
       for (int i = 0; i < length; i++) {
         int[] dictIds = dictIdsMV[i];
         int numValues = dictIds.length;
@@ -408,10 +406,9 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[][] dictIdsMV = transformToDictIdsMV(projectionBlock);
-      Dictionary dictionary = getDictionary();
       for (int i = 0; i < length; i++) {
         int[] dictIds = dictIdsMV[i];
         int numValues = dictIds.length;
@@ -475,10 +472,9 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[][] dictIdsMV = transformToDictIdsMV(projectionBlock);
-      Dictionary dictionary = getDictionary();
       for (int i = 0; i < length; i++) {
         int[] dictIds = dictIdsMV[i];
         int numValues = dictIds.length;
@@ -542,10 +538,9 @@ public abstract class BaseTransformFunction implements TransformFunction {
     }
 
     int length = projectionBlock.getNumDocs();
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary()) {
+    Dictionary dictionary = getDictionary();
+    if (dictionary != null) {
       int[][] dictIdsMV = transformToDictIdsMV(projectionBlock);
-      Dictionary dictionary = getDictionary();
       for (int i = 0; i < length; i++) {
         int[] dictIds = dictIdsMV[i];
         int numValues = dictIds.length;
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java
index 8b6f5c2..4200e9e 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java
@@ -49,6 +49,7 @@ public class MapValueTransformFunction extends BaseTransformFunction {
   private TransformFunction _keyColumnFunction;
   private int _keyDictId;
   private TransformFunction _valueColumnFunction;
+  private Dictionary _valueColumnDictionary;
   private TransformResultMetadata _resultMetadata;
 
   private int[] _dictIds;
@@ -65,18 +66,20 @@ public class MapValueTransformFunction extends BaseTransformFunction {
 
     _keyColumnFunction = arguments.get(0);
     TransformResultMetadata keyColumnMetadata = _keyColumnFunction.getResultMetadata();
-    Preconditions.checkState(!keyColumnMetadata.isSingleValue() && keyColumnMetadata.hasDictionary(),
+    Dictionary keyColumnDictionary = _keyColumnFunction.getDictionary();
+    Preconditions.checkState(!keyColumnMetadata.isSingleValue() && keyColumnDictionary != null,
         "Key column must be dictionary-encoded multi-value column");
 
     TransformFunction keyValueFunction = arguments.get(1);
     Preconditions.checkState(keyValueFunction instanceof LiteralTransformFunction,
         "Key value must be a literal (number or string)");
     String keyValue = ((LiteralTransformFunction) keyValueFunction).getLiteral();
-    _keyDictId = _keyColumnFunction.getDictionary().indexOf(keyValue);
+    _keyDictId = keyColumnDictionary.indexOf(keyValue);
 
     _valueColumnFunction = arguments.get(2);
     TransformResultMetadata valueColumnMetadata = _valueColumnFunction.getResultMetadata();
-    Preconditions.checkState(!valueColumnMetadata.isSingleValue() && valueColumnMetadata.hasDictionary(),
+    _valueColumnDictionary = _valueColumnFunction.getDictionary();
+    Preconditions.checkState(!valueColumnMetadata.isSingleValue() && _valueColumnDictionary != null,
         "Value column must be dictionary-encoded multi-value column");
     _resultMetadata = new TransformResultMetadata(valueColumnMetadata.getDataType(), true, true);
   }
@@ -88,7 +91,7 @@ public class MapValueTransformFunction extends BaseTransformFunction {
 
   @Override
   public Dictionary getDictionary() {
-    return _valueColumnFunction.getDictionary();
+    return _valueColumnDictionary;
   }
 
   @Override
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunction.java
index 530b052..c34e0c8 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunction.java
@@ -20,6 +20,7 @@ package org.apache.pinot.core.operator.transform.function;
 
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.pinot.core.common.DataSource;
 import org.apache.pinot.core.operator.blocks.ProjectionBlock;
 import org.apache.pinot.core.operator.transform.TransformResultMetadata;
@@ -59,7 +60,7 @@ public interface TransformFunction {
    */
 
   /**
-   * Returns the dictionary that the dictionary Ids based on.
+   * Returns the dictionary for the transform result if the result is dictionary-encoded, or {@code null} if not.
    *
    * @return Dictionary
    */
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java
index 508fe11..17afe85 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java
@@ -51,6 +51,9 @@ public class ValueInTransformFunction extends BaseTransformFunction {
   public static final String FUNCTION_NAME = "valueIn";
 
   private TransformFunction _mainTransformFunction;
+  private TransformResultMetadata _resultMetadata;
+  private Dictionary _dictionary;
+
   private IntSet _dictIdSet;
   private int[][] _dictIds;
   private IntSet _intValueSet;
@@ -84,6 +87,8 @@ public class ValueInTransformFunction extends BaseTransformFunction {
           "The first argument of VALUE_IN transform function must be a multi-valued column or a transform function");
     }
     _mainTransformFunction = firstArgument;
+    _resultMetadata = _mainTransformFunction.getResultMetadata();
+    _dictionary = _mainTransformFunction.getDictionary();
 
     // Collect all values for the VALUE_IN transform function
     _stringValueSet = new HashSet<>(numArguments - 1);
@@ -94,21 +99,21 @@ public class ValueInTransformFunction extends BaseTransformFunction {
 
   @Override
   public TransformResultMetadata getResultMetadata() {
-    return _mainTransformFunction.getResultMetadata();
+    return _resultMetadata;
   }
 
   @Override
   public Dictionary getDictionary() {
-    return _mainTransformFunction.getDictionary();
+    return _dictionary;
   }
 
   @Override
   public int[][] transformToDictIdsMV(ProjectionBlock projectionBlock) {
     if (_dictIdSet == null) {
       _dictIdSet = new IntOpenHashSet();
-      Dictionary dictionary = _mainTransformFunction.getDictionary();
+      assert _dictionary != null;
       for (String inValue : _stringValueSet) {
-        int dictId = dictionary.indexOf(inValue);
+        int dictId = _dictionary.indexOf(inValue);
         if (dictId >= 0) {
           _dictIdSet.add(dictId);
         }
@@ -125,8 +130,7 @@ public class ValueInTransformFunction extends BaseTransformFunction {
 
   @Override
   public int[][] transformToIntValuesMV(ProjectionBlock projectionBlock) {
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary() || resultMetadata.getDataType() != FieldSpec.DataType.INT) {
+    if (_dictionary != null || _resultMetadata.getDataType() != FieldSpec.DataType.INT) {
       return super.transformToIntValuesMV(projectionBlock);
     }
 
@@ -147,8 +151,7 @@ public class ValueInTransformFunction extends BaseTransformFunction {
 
   @Override
   public long[][] transformToLongValuesMV(ProjectionBlock projectionBlock) {
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary() || resultMetadata.getDataType() != FieldSpec.DataType.LONG) {
+    if (_dictionary != null || _resultMetadata.getDataType() != FieldSpec.DataType.LONG) {
       return super.transformToLongValuesMV(projectionBlock);
     }
 
@@ -169,8 +172,7 @@ public class ValueInTransformFunction extends BaseTransformFunction {
 
   @Override
   public float[][] transformToFloatValuesMV(ProjectionBlock projectionBlock) {
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary() || resultMetadata.getDataType() != FieldSpec.DataType.FLOAT) {
+    if (_dictionary != null || _resultMetadata.getDataType() != FieldSpec.DataType.FLOAT) {
       return super.transformToFloatValuesMV(projectionBlock);
     }
 
@@ -191,8 +193,7 @@ public class ValueInTransformFunction extends BaseTransformFunction {
 
   @Override
   public double[][] transformToDoubleValuesMV(ProjectionBlock projectionBlock) {
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary() || resultMetadata.getDataType() != FieldSpec.DataType.DOUBLE) {
+    if (_dictionary != null || _resultMetadata.getDataType() != FieldSpec.DataType.DOUBLE) {
       return super.transformToDoubleValuesMV(projectionBlock);
     }
 
@@ -213,8 +214,7 @@ public class ValueInTransformFunction extends BaseTransformFunction {
 
   @Override
   public String[][] transformToStringValuesMV(ProjectionBlock projectionBlock) {
-    TransformResultMetadata resultMetadata = getResultMetadata();
-    if (resultMetadata.hasDictionary() || resultMetadata.getDataType() != FieldSpec.DataType.STRING) {
+    if (_dictionary != null || _resultMetadata.getDataType() != FieldSpec.DataType.STRING) {
       return super.transformToStringValuesMV(projectionBlock);
     }
 
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/segment/index/data/source/ColumnDataSource.java b/pinot-core/src/main/java/org/apache/pinot/core/segment/index/data/source/ColumnDataSource.java
index c44677f..1eb8df0 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/segment/index/data/source/ColumnDataSource.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/segment/index/data/source/ColumnDataSource.java
@@ -151,13 +151,13 @@ public final class ColumnDataSource extends DataSource {
   }
 
   @Override
-  public InvertedIndexReader getInvertedIndex() {
-    return _invertedIndex;
+  public Dictionary getDictionary() {
+    return _dictionary;
   }
 
   @Override
-  public Dictionary getDictionary() {
-    return _dictionary;
+  public InvertedIndexReader getInvertedIndex() {
+    return _invertedIndex;
   }
 
   @Override
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeDimensionDataSource.java b/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeDimensionDataSource.java
index fc6c5db..62890b2 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeDimensionDataSource.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeDimensionDataSource.java
@@ -99,18 +99,18 @@ public class StarTreeDimensionDataSource extends DataSource {
   }
 
   @Override
-  public InvertedIndexReader getInvertedIndex() {
-    return null;
+  public Dictionary getDictionary() {
+    return _dictionary;
   }
 
   @Override
-  public BloomFilterReader getBloomFilter() {
+  public InvertedIndexReader getInvertedIndex() {
     return null;
   }
 
   @Override
-  public Dictionary getDictionary() {
-    return _dictionary;
+  public BloomFilterReader getBloomFilter() {
+    return null;
   }
 
   @Override
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeMetricDataSource.java b/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeMetricDataSource.java
index 9beca9b..060419b 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeMetricDataSource.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/startree/v2/store/StarTreeMetricDataSource.java
@@ -104,12 +104,12 @@ public class StarTreeMetricDataSource extends DataSource {
   }
 
   @Override
-  public InvertedIndexReader getInvertedIndex() {
+  public Dictionary getDictionary() {
     return null;
   }
 
   @Override
-  public Dictionary getDictionary() {
+  public InvertedIndexReader getInvertedIndex() {
     return null;
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org