You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by su...@apache.org on 2018/12/11 00:29:04 UTC

[incubator-pinot] 01/01: Cleanup: update code to return only physical columns for select * queries

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

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

commit e0674fb6ed0747e65c0a56019ebc9d56ed675952
Author: Sunitha Beeram <sb...@linkedin.com>
AuthorDate: Mon Dec 10 16:28:42 2018 -0800

    Cleanup: update code to return only physical columns for select * queries
---
 .../operator/query/SelectionOrderByOperator.java   |  7 +--
 .../query/selection/SelectionOperatorUtils.java    | 11 +---
 .../pinot/core/segment/index/ColumnMetadata.java   | 24 +++++++--
 .../virtualcolumn/BaseVirtualColumnProvider.java   | 13 +++++
 .../virtualcolumn/DocIdVirtualColumnProvider.java  |  8 ++-
 .../SingleStringVirtualColumnProvider.java         |  9 ++--
 .../pinot/core/common/DataFetcherTest.java         |  2 +-
 .../function/BaseTransformFunctionTest.java        |  2 +-
 .../core/startree/hll/HllIndexCreationTest.java    |  2 +-
 ...nnerSegmentSelectionSingleValueQueriesTest.java | 61 ++++++++++++++++++++++
 .../DefaultAggregationExecutorTest.java            |  2 +-
 .../tests/OfflineClusterIntegrationTest.java       |  2 +
 .../com/linkedin/pinot/perf/RawIndexBenchmark.java |  2 +-
 .../tools/scan/query/SegmentQueryProcessor.java    |  2 +-
 14 files changed, 112 insertions(+), 35 deletions(-)

diff --git a/pinot-core/src/main/java/com/linkedin/pinot/core/operator/query/SelectionOrderByOperator.java b/pinot-core/src/main/java/com/linkedin/pinot/core/operator/query/SelectionOrderByOperator.java
index 2e5f35b..524c857 100644
--- a/pinot-core/src/main/java/com/linkedin/pinot/core/operator/query/SelectionOrderByOperator.java
+++ b/pinot-core/src/main/java/com/linkedin/pinot/core/operator/query/SelectionOrderByOperator.java
@@ -65,11 +65,8 @@ public class SelectionOrderByOperator extends BaseOperator<IntermediateResultsBl
     _selectionColumns.addAll(_selection.getSelectionColumns());
     if ((_selectionColumns.size() == 1) && ((_selectionColumns.toArray(new String[0]))[0].equals("*"))) {
       _selectionColumns.clear();
-      for (String columnName : indexSegment.getColumnNames()) {
-        // Filter out columns that start with $ (virtual columns)
-        if (!columnName.startsWith("$")) {
-          _selectionColumns.add(columnName);
-        }
+      for (String columnName : indexSegment.getPhysicalColumnNames()) {
+        _selectionColumns.add(columnName);
       }
     }
     if (_selection.getSelectionSortSequence() != null) {
diff --git a/pinot-core/src/main/java/com/linkedin/pinot/core/query/selection/SelectionOperatorUtils.java b/pinot-core/src/main/java/com/linkedin/pinot/core/query/selection/SelectionOperatorUtils.java
index 51958e9..ad02aae 100644
--- a/pinot-core/src/main/java/com/linkedin/pinot/core/query/selection/SelectionOperatorUtils.java
+++ b/pinot-core/src/main/java/com/linkedin/pinot/core/query/selection/SelectionOperatorUtils.java
@@ -84,15 +84,8 @@ public class SelectionOperatorUtils {
   public static List<String> getSelectionColumns(@Nonnull List<String> selectionColumns,
       @Nonnull IndexSegment indexSegment) {
     if (selectionColumns.size() == 1 && selectionColumns.get(0).equals("*")) {
-      List<String> allColumns = new LinkedList<>(indexSegment.getColumnNames());
-      Set<String> columnNames = indexSegment.getColumnNames();
-
-      // Remove columns that start with $ (eg. $docId) when doing select *
-      for (String columnName : columnNames) {
-        if (columnName.startsWith("$")) {
-          allColumns.remove(columnName);
-        }
-      }
+      List<String> allColumns = new LinkedList<>(indexSegment.getPhysicalColumnNames());
+      Set<String> columnNames = indexSegment.getPhysicalColumnNames();
 
       Collections.sort(allColumns);
       return allColumns;
diff --git a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/index/ColumnMetadata.java b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/index/ColumnMetadata.java
index 85ce757..eeb5983 100644
--- a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/index/ColumnMetadata.java
+++ b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/index/ColumnMetadata.java
@@ -64,6 +64,7 @@ public class ColumnMetadata {
   @JsonProperty
   private final boolean hasInvertedIndex;
   private final boolean isSingleValue;
+  private final boolean isVirtual;
   private final int maxNumberOfMultiValues;
   private final int totalNumberOfEntries;
   private final boolean isAutoGenerated;
@@ -81,6 +82,7 @@ public class ColumnMetadata {
   private final String dateTimeFormat;
   private final String dateTimeGranularity;
 
+
   public static ColumnMetadata fromPropertiesConfiguration(String column, PropertiesConfiguration config) {
     Builder builder = new Builder();
 
@@ -221,6 +223,7 @@ public class ColumnMetadata {
     private boolean hasDictionary;
     private boolean hasInvertedIndex;
     private boolean isSingleValue;
+    private boolean isVirtual;
     private int maxNumberOfMultiValues;
     private int totalNumberOfEntries;
     private boolean isAutoGenerated;
@@ -323,6 +326,11 @@ public class ColumnMetadata {
       return this;
     }
 
+    public Builder setVirtual(boolean isVirtual) {
+      this.isVirtual = isVirtual;
+      return this;
+    }
+
     public Builder setDefaultNullValueString(String defaultNullValueString) {
       this.defaultNullValueString = defaultNullValueString;
       return this;
@@ -390,7 +398,7 @@ public class ColumnMetadata {
     public ColumnMetadata build() {
       return new ColumnMetadata(columnName, cardinality, totalDocs, totalRawDocs, totalAggDocs, dataType,
           bitsPerElement, columnMaxLength, fieldType, isSorted, containsNulls, hasDictionary, hasInvertedIndex,
-          isSingleValue, maxNumberOfMultiValues, totalNumberOfEntries, isAutoGenerated, defaultNullValueString,
+          isSingleValue, maxNumberOfMultiValues, totalNumberOfEntries, isAutoGenerated, isVirtual, defaultNullValueString,
           timeUnit, paddingCharacter, derivedMetricType, fieldSize, originColumnName, minValue, maxValue,
           partitionFunction, numPartitions, partitionValues, dateTimeFormat, dateTimeGranularity);
     }
@@ -399,10 +407,11 @@ public class ColumnMetadata {
   private ColumnMetadata(String columnName, int cardinality, int totalDocs, int totalRawDocs, int totalAggDocs,
       DataType dataType, int bitsPerElement, int columnMaxLength, FieldType fieldType, boolean isSorted,
       boolean hasNulls, boolean hasDictionary, boolean hasInvertedIndex, boolean isSingleValue,
-      int maxNumberOfMultiValues, int totalNumberOfEntries, boolean isAutoGenerated, String defaultNullValueString,
-      TimeUnit timeUnit, char paddingCharacter, DerivedMetricType derivedMetricType, int fieldSize,
-      String originColumnName, Comparable minValue, Comparable maxValue, PartitionFunction partitionFunction,
-      int numPartitions, List<IntRange> partitionRanges, String dateTimeFormat, String dateTimeGranularity) {
+      int maxNumberOfMultiValues, int totalNumberOfEntries, boolean isAutoGenerated, boolean isVirtual,
+      String defaultNullValueString, TimeUnit timeUnit, char paddingCharacter, DerivedMetricType derivedMetricType,
+      int fieldSize, String originColumnName, Comparable minValue, Comparable maxValue,
+      PartitionFunction partitionFunction, int numPartitions, List<IntRange> partitionRanges, String dateTimeFormat,
+      String dateTimeGranularity) {
     this.columnName = columnName;
     this.cardinality = cardinality;
     this.totalDocs = totalDocs;
@@ -420,6 +429,7 @@ public class ColumnMetadata {
     this.maxNumberOfMultiValues = maxNumberOfMultiValues;
     this.totalNumberOfEntries = totalNumberOfEntries;
     this.isAutoGenerated = isAutoGenerated;
+    this.isVirtual = isVirtual;
     this.defaultNullValueString = defaultNullValueString;
     this.timeUnit = timeUnit;
     this.paddingCharacter = paddingCharacter;
@@ -530,6 +540,10 @@ public class ColumnMetadata {
     return isAutoGenerated;
   }
 
+  public boolean isVirtual() {
+    return isVirtual;
+  }
+
   public String getDefaultNullValueString() {
     return defaultNullValueString;
   }
diff --git a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/BaseVirtualColumnProvider.java b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/BaseVirtualColumnProvider.java
index f8278ab..08f5e9e 100644
--- a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/BaseVirtualColumnProvider.java
+++ b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/BaseVirtualColumnProvider.java
@@ -15,6 +15,8 @@
  */
 package com.linkedin.pinot.core.segment.virtualcolumn;
 
+import com.linkedin.pinot.common.data.FieldSpec;
+import com.linkedin.pinot.core.segment.index.ColumnMetadata;
 import com.linkedin.pinot.core.segment.index.column.ColumnIndexContainer;
 
 
@@ -22,6 +24,17 @@ import com.linkedin.pinot.core.segment.index.column.ColumnIndexContainer;
  * Shared implementation code between virtual column providers.
  */
 public abstract class BaseVirtualColumnProvider implements VirtualColumnProvider {
+
+  protected ColumnMetadata.Builder getColumnMetadataBuilder(VirtualColumnContext context) {
+
+    ColumnMetadata.Builder builder = new ColumnMetadata.Builder()
+        .setVirtual(true)
+        .setColumnName(context.getColumnName())
+        .setTotalDocs(context.getTotalDocCount());
+
+    return builder;
+  }
+
   @Override
   public ColumnIndexContainer buildColumnIndexContainer(VirtualColumnContext context) {
     return new VirtualColumnIndexContainer(buildReader(context), buildInvertedIndex(context), buildDictionary(context));
diff --git a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/DocIdVirtualColumnProvider.java b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/DocIdVirtualColumnProvider.java
index 80e0c78..0d3b292 100644
--- a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/DocIdVirtualColumnProvider.java
+++ b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/DocIdVirtualColumnProvider.java
@@ -51,16 +51,14 @@ public class DocIdVirtualColumnProvider extends BaseVirtualColumnProvider {
 
   @Override
   public ColumnMetadata buildMetadata(VirtualColumnContext context) {
-    ColumnMetadata.Builder columnMetadataBuilder = new ColumnMetadata.Builder()
-        .setColumnName(context.getColumnName())
-        .setCardinality(context.getTotalDocCount())
+    ColumnMetadata.Builder columnMetadataBuilder = super.getColumnMetadataBuilder(context);
+    columnMetadataBuilder.setCardinality(context.getTotalDocCount())
         .setHasDictionary(true)
         .setHasInvertedIndex(true)
         .setFieldType(FieldSpec.FieldType.DIMENSION)
         .setDataType(FieldSpec.DataType.INT)
         .setSingleValue(true)
-        .setIsSorted(true)
-        .setTotalDocs(context.getTotalDocCount());
+        .setIsSorted(true);
 
     return columnMetadataBuilder.build();
   }
diff --git a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/SingleStringVirtualColumnProvider.java b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/SingleStringVirtualColumnProvider.java
index 535489b..f9dc33a 100644
--- a/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/SingleStringVirtualColumnProvider.java
+++ b/pinot-core/src/main/java/com/linkedin/pinot/core/segment/virtualcolumn/SingleStringVirtualColumnProvider.java
@@ -51,16 +51,15 @@ public abstract class SingleStringVirtualColumnProvider extends BaseVirtualColum
 
   @Override
   public ColumnMetadata buildMetadata(VirtualColumnContext context) {
-    ColumnMetadata.Builder columnMetadataBuilder = new ColumnMetadata.Builder()
-        .setColumnName(context.getColumnName())
-        .setCardinality(1)
+    ColumnMetadata.Builder columnMetadataBuilder = super.getColumnMetadataBuilder(context);
+
+    columnMetadataBuilder.setCardinality(1)
         .setHasDictionary(true)
         .setHasInvertedIndex(true)
         .setFieldType(FieldSpec.FieldType.DIMENSION)
         .setDataType(FieldSpec.DataType.STRING)
         .setSingleValue(true)
-        .setIsSorted(true)
-        .setTotalDocs(context.getTotalDocCount());
+        .setIsSorted(true);
 
     return columnMetadataBuilder.build();
   }
diff --git a/pinot-core/src/test/java/com/linkedin/pinot/core/common/DataFetcherTest.java b/pinot-core/src/test/java/com/linkedin/pinot/core/common/DataFetcherTest.java
index e784273..45b79fa 100644
--- a/pinot-core/src/test/java/com/linkedin/pinot/core/common/DataFetcherTest.java
+++ b/pinot-core/src/test/java/com/linkedin/pinot/core/common/DataFetcherTest.java
@@ -121,7 +121,7 @@ public class DataFetcherTest {
     IndexSegment indexSegment = ImmutableSegmentLoader.load(new File(INDEX_DIR_PATH, SEGMENT_NAME), ReadMode.heap);
 
     Map<String, DataSource> dataSourceMap = new HashMap<>();
-    for (String column : indexSegment.getColumnNames()) {
+    for (String column : indexSegment.getPhysicalColumnNames()) {
       dataSourceMap.put(column, indexSegment.getDataSource(column));
     }
     // Get a data fetcher for the index segment.
diff --git a/pinot-core/src/test/java/com/linkedin/pinot/core/operator/transform/function/BaseTransformFunctionTest.java b/pinot-core/src/test/java/com/linkedin/pinot/core/operator/transform/function/BaseTransformFunctionTest.java
index 54cbc27..d4161a9 100644
--- a/pinot-core/src/test/java/com/linkedin/pinot/core/operator/transform/function/BaseTransformFunctionTest.java
+++ b/pinot-core/src/test/java/com/linkedin/pinot/core/operator/transform/function/BaseTransformFunctionTest.java
@@ -128,7 +128,7 @@ public abstract class BaseTransformFunctionTest {
     driver.build();
 
     IndexSegment indexSegment = ImmutableSegmentLoader.load(new File(INDEX_DIR_PATH, SEGMENT_NAME), ReadMode.heap);
-    Set<String> columnNames = indexSegment.getColumnNames();
+    Set<String> columnNames = indexSegment.getPhysicalColumnNames();
     _dataSourceMap = new HashMap<>(columnNames.size());
     for (String columnName : columnNames) {
       _dataSourceMap.put(columnName, indexSegment.getDataSource(columnName));
diff --git a/pinot-core/src/test/java/com/linkedin/pinot/core/startree/hll/HllIndexCreationTest.java b/pinot-core/src/test/java/com/linkedin/pinot/core/startree/hll/HllIndexCreationTest.java
index 74102ff..61f058c 100644
--- a/pinot-core/src/test/java/com/linkedin/pinot/core/startree/hll/HllIndexCreationTest.java
+++ b/pinot-core/src/test/java/com/linkedin/pinot/core/startree/hll/HllIndexCreationTest.java
@@ -119,7 +119,7 @@ public class HllIndexCreationTest {
         docIdSet[i] = i;
       }
       Map<String, DataSource> dataSourceMap = new HashMap<>();
-      for (String column : indexSegment.getColumnNames()) {
+      for (String column : indexSegment.getPhysicalColumnNames()) {
         dataSourceMap.put(column, indexSegment.getDataSource(column));
       }
       DataBlockCache blockCache = new DataBlockCache(new DataFetcher(dataSourceMap));
diff --git a/pinot-core/src/test/java/com/linkedin/pinot/queries/InnerSegmentSelectionSingleValueQueriesTest.java b/pinot-core/src/test/java/com/linkedin/pinot/queries/InnerSegmentSelectionSingleValueQueriesTest.java
index 6285d42..1199896 100644
--- a/pinot-core/src/test/java/com/linkedin/pinot/queries/InnerSegmentSelectionSingleValueQueriesTest.java
+++ b/pinot-core/src/test/java/com/linkedin/pinot/queries/InnerSegmentSelectionSingleValueQueriesTest.java
@@ -84,6 +84,7 @@ public class InnerSegmentSelectionSingleValueQueriesTest extends BaseSingleValue
     Assert.assertEquals(executionStatistics.getNumTotalRawDocs(), 30000L);
     DataSchema selectionDataSchema = resultsBlock.getSelectionDataSchema();
     Assert.assertEquals(selectionDataSchema.size(), 11);
+    Assert.assertEquals(getVirtualColumns(selectionDataSchema), 0);
     Assert.assertEquals(selectionDataSchema.getColumnName(0), "column1");
     Assert.assertEquals(selectionDataSchema.getColumnName(1), "column11");
     Assert.assertEquals(selectionDataSchema.getColumnDataType(0), DataSchema.ColumnDataType.INT);
@@ -105,6 +106,7 @@ public class InnerSegmentSelectionSingleValueQueriesTest extends BaseSingleValue
     Assert.assertEquals(executionStatistics.getNumTotalRawDocs(), 30000L);
     selectionDataSchema = resultsBlock.getSelectionDataSchema();
     Assert.assertEquals(selectionDataSchema.size(), 11);
+    Assert.assertEquals(getVirtualColumns(selectionDataSchema), 0);
     Assert.assertEquals(selectionDataSchema.getColumnName(0), "column1");
     Assert.assertEquals(selectionDataSchema.getColumnName(1), "column11");
     Assert.assertEquals(selectionDataSchema.getColumnDataType(0), DataSchema.ColumnDataType.INT);
@@ -210,4 +212,63 @@ public class InnerSegmentSelectionSingleValueQueriesTest extends BaseSingleValue
     Assert.assertEquals(((Integer) lastRow[0]).intValue(), 6043515);
     Assert.assertEquals(((Integer) lastRow[1]).intValue(), 462769197);
   }
+
+  @Test
+  public void testSelectStarOrderBy() {
+    String query = "SELECT * " + " FROM testTable" + ORDER_BY;
+
+    // Test query without filter
+    SelectionOrderByOperator selectionOrderByOperator = getOperatorForQuery(query);
+    IntermediateResultsBlock resultsBlock = selectionOrderByOperator.nextBlock();
+    ExecutionStatistics executionStatistics = selectionOrderByOperator.getExecutionStatistics();
+    Assert.assertEquals(executionStatistics.getNumDocsScanned(), 30000L);
+    Assert.assertEquals(executionStatistics.getNumEntriesScannedInFilter(), 0L);
+    Assert.assertEquals(executionStatistics.getNumEntriesScannedPostFilter(), 330000L);
+    Assert.assertEquals(executionStatistics.getNumTotalRawDocs(), 30000L);
+    DataSchema selectionDataSchema = resultsBlock.getSelectionDataSchema();
+    Assert.assertEquals(getVirtualColumns(selectionDataSchema), 0);
+    Assert.assertEquals(selectionDataSchema.size(), 11);
+    Assert.assertEquals(selectionDataSchema.getColumnName(0), "column6");
+    Assert.assertEquals(selectionDataSchema.getColumnName(1), "column1");
+    Assert.assertEquals(selectionDataSchema.getColumnDataType(0), DataSchema.ColumnDataType.INT);
+    Assert.assertEquals(selectionDataSchema.getColumnDataType(1), DataSchema.ColumnDataType.INT);
+    Queue<Serializable[]> selectionResult = (Queue<Serializable[]>) resultsBlock.getSelectionResult();
+    Assert.assertEquals(selectionResult.size(), 10);
+    Serializable[] lastRow = selectionResult.peek();
+    Assert.assertEquals(lastRow.length, 11);
+    Assert.assertEquals(((Integer) lastRow[0]).intValue(), 6043515);
+    Assert.assertEquals(((Integer) lastRow[1]).intValue(), 10542595);
+
+    // Test query with filter
+    selectionOrderByOperator = getOperatorForQueryWithFilter(query);
+    resultsBlock = selectionOrderByOperator.nextBlock();
+    executionStatistics = selectionOrderByOperator.getExecutionStatistics();
+    Assert.assertEquals(executionStatistics.getNumDocsScanned(), 6129L);
+    Assert.assertEquals(executionStatistics.getNumEntriesScannedInFilter(), 84134L);
+    Assert.assertEquals(executionStatistics.getNumEntriesScannedPostFilter(), 67419);
+    Assert.assertEquals(executionStatistics.getNumTotalRawDocs(), 30000L);
+    selectionDataSchema = resultsBlock.getSelectionDataSchema();
+    Assert.assertEquals(getVirtualColumns(selectionDataSchema), 0);
+    Assert.assertEquals(selectionDataSchema.size(), 11);
+    Assert.assertEquals(selectionDataSchema.getColumnName(0), "column6");
+    Assert.assertEquals(selectionDataSchema.getColumnName(1), "column1");
+    Assert.assertEquals(selectionDataSchema.getColumnDataType(0), DataSchema.ColumnDataType.INT);
+    Assert.assertEquals(selectionDataSchema.getColumnDataType(1), DataSchema.ColumnDataType.INT);
+    selectionResult = (Queue<Serializable[]>) resultsBlock.getSelectionResult();
+    Assert.assertEquals(selectionResult.size(), 10);
+    lastRow = selectionResult.peek();
+    Assert.assertEquals(lastRow.length, 11);
+    Assert.assertEquals(((Integer) lastRow[0]).intValue(), 6043515);
+    Assert.assertEquals(((Integer) lastRow[1]).intValue(), 462769197);
+  }
+
+  private int getVirtualColumns(DataSchema selectionDataSchema) {
+    int virtualCols = 0;
+    for (int i = 0; i < selectionDataSchema.size(); ++i) {
+      if (selectionDataSchema.getColumnName(i).startsWith("$")) {
+        virtualCols++;
+      }
+    }
+    return virtualCols;
+  }
 }
diff --git a/pinot-core/src/test/java/com/linkedin/pinot/query/aggregation/DefaultAggregationExecutorTest.java b/pinot-core/src/test/java/com/linkedin/pinot/query/aggregation/DefaultAggregationExecutorTest.java
index 245f08a..70e29bf 100644
--- a/pinot-core/src/test/java/com/linkedin/pinot/query/aggregation/DefaultAggregationExecutorTest.java
+++ b/pinot-core/src/test/java/com/linkedin/pinot/query/aggregation/DefaultAggregationExecutorTest.java
@@ -126,7 +126,7 @@ public class DefaultAggregationExecutorTest {
   void testAggregation() {
     Map<String, DataSource> dataSourceMap = new HashMap<>();
     Set<TransformExpressionTree> expressionTrees = new HashSet<>();
-    for (String column : _indexSegment.getColumnNames()) {
+    for (String column : _indexSegment.getPhysicalColumnNames()) {
       dataSourceMap.put(column, _indexSegment.getDataSource(column));
       expressionTrees.add(TransformExpressionTree.compileToExpressionTree(column));
     }
diff --git a/pinot-integration-tests/src/test/java/com/linkedin/pinot/integration/tests/OfflineClusterIntegrationTest.java b/pinot-integration-tests/src/test/java/com/linkedin/pinot/integration/tests/OfflineClusterIntegrationTest.java
index 4e5febf..3843f0a 100644
--- a/pinot-integration-tests/src/test/java/com/linkedin/pinot/integration/tests/OfflineClusterIntegrationTest.java
+++ b/pinot-integration-tests/src/test/java/com/linkedin/pinot/integration/tests/OfflineClusterIntegrationTest.java
@@ -234,6 +234,8 @@ public class OfflineClusterIntegrationTest extends BaseClusterIntegrationTestSet
     queryResponse = postQuery(SELECT_STAR_QUERY);
     Assert.assertEquals(queryResponse.getLong("totalDocs"), numTotalDocs);
     Assert.assertEquals(queryResponse.getJSONObject("selectionResults").getJSONArray("columns").length(), 79);
+
+
   }
 
   private void reloadDefaultColumns(final boolean withExtraColumns) throws Exception {
diff --git a/pinot-perf/src/main/java/com/linkedin/pinot/perf/RawIndexBenchmark.java b/pinot-perf/src/main/java/com/linkedin/pinot/perf/RawIndexBenchmark.java
index 416db31..c10890a 100644
--- a/pinot-perf/src/main/java/com/linkedin/pinot/perf/RawIndexBenchmark.java
+++ b/pinot-perf/src/main/java/com/linkedin/pinot/perf/RawIndexBenchmark.java
@@ -241,7 +241,7 @@ public class RawIndexBenchmark {
    */
   private Map<String, DataSource> buildDataSourceMap(IndexSegment segment) {
     Map<String, DataSource> dataSourceMap = new HashMap<>();
-    for (String column : segment.getColumnNames()) {
+    for (String column : segment.getPhysicalColumnNames()) {
       dataSourceMap.put(column, segment.getDataSource(column));
     }
     return dataSourceMap;
diff --git a/pinot-tools/src/main/java/com/linkedin/pinot/tools/scan/query/SegmentQueryProcessor.java b/pinot-tools/src/main/java/com/linkedin/pinot/tools/scan/query/SegmentQueryProcessor.java
index 3085a2b..307acec 100644
--- a/pinot-tools/src/main/java/com/linkedin/pinot/tools/scan/query/SegmentQueryProcessor.java
+++ b/pinot-tools/src/main/java/com/linkedin/pinot/tools/scan/query/SegmentQueryProcessor.java
@@ -110,7 +110,7 @@ class SegmentQueryProcessor {
       if (brokerRequest.isSetSelections()) {
         List<String> columns = brokerRequest.getSelections().getSelectionColumns();
         if (columns.contains("*")) {
-          columns = new ArrayList<>(_immutableSegment.getColumnNames());
+          columns = new ArrayList<>(_immutableSegment.getPhysicalColumnNames());
         }
         List<Pair> selectionColumns = new ArrayList<>();
         Set<String> columSet = new HashSet<>();


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