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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
