This is an automated email from the ASF dual-hosted git repository. xiangfu pushed a commit to branch winedepot-0.10 in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit d81112f84fed8fbaff75d5073df051b6c4d6cba1 Author: Xiang Fu <[email protected]> AuthorDate: Tue Aug 20 12:34:33 2019 -0700 Update selection columns logic --- .../core/query/selection/SelectionOperatorService.java | 16 ++++------------ .../core/query/selection/SelectionOperatorUtils.java | 18 +++++++++++------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorService.java b/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorService.java index f504507..e2f87f4 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorService.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorService.java @@ -71,7 +71,7 @@ import org.apache.pinot.core.query.selection.comparator.CompositeDocIdValCompara public class SelectionOperatorService { private final List<String> _selectionColumns; private final List<SelectionSort> _sortSequence; - private final List<Integer> _sortColumnIdx; + private final int[] _sortColumnIdx; private final DataSchema _dataSchema; private final int _selectionOffset; private final int _maxNumRows; @@ -88,22 +88,14 @@ public class SelectionOperatorService { public SelectionOperatorService(@Nonnull Selection selection, @Nonnull IndexSegment indexSegment) { _selectionColumns = SelectionOperatorUtils.getSelectionColumns(selection.getSelectionColumns(), indexSegment); _sortSequence = getSortSequence(selection.getSelectionSortSequence()); - _sortColumnIdx = getSortColumnIdx(_sortSequence, _selectionColumns); _dataSchema = SelectionOperatorUtils.extractDataSchema(_sortSequence, _selectionColumns, indexSegment); + _sortColumnIdx = SelectionOperatorUtils.getColumnIndices(SelectionOperatorUtils.extractSortColumns(_sortSequence), _dataSchema); // Select rows from offset to offset + size. _selectionOffset = selection.getOffset(); _maxNumRows = _selectionOffset + selection.getSize(); _rows = new PriorityQueue<>(_maxNumRows, getStrictComparator()); } - private List<Integer> getSortColumnIdx(List<SelectionSort> sortSequence, List<String> selectionColumns) { - List<Integer> sortColumnIdx = new ArrayList<>(); - for (SelectionSort seq: sortSequence) { - sortColumnIdx.add(selectionColumns.indexOf(seq.column)); - } - return sortColumnIdx; - } - /** * Constructor for <code>SelectionOperatorService</code> with {@link DataSchema}. (Inter segment) * @@ -113,8 +105,8 @@ public class SelectionOperatorService { public SelectionOperatorService(@Nonnull Selection selection, @Nonnull DataSchema dataSchema) { _selectionColumns = SelectionOperatorUtils.getSelectionColumns(selection.getSelectionColumns(), dataSchema); _sortSequence = getSortSequence(selection.getSelectionSortSequence()); - _sortColumnIdx = getSortColumnIdx(_sortSequence, _selectionColumns); _dataSchema = dataSchema; + _sortColumnIdx = SelectionOperatorUtils.getColumnIndices(SelectionOperatorUtils.extractSortColumns(_sortSequence), _dataSchema); // Select rows from offset to offset + size. _selectionOffset = selection.getOffset(); _maxNumRows = _selectionOffset + selection.getSize(); @@ -223,7 +215,7 @@ public class SelectionOperatorService { for (int i = 0; i < numSortColumns; i++) { int ret = 0; SelectionSort selectionSort = _sortSequence.get(i); - int colIdx = _sortColumnIdx.get(i); + int colIdx = _sortColumnIdx[i]; Serializable v1 = o1[colIdx]; Serializable v2 = o2[colIdx]; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorUtils.java b/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorUtils.java index abdcd38..27585fe 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorUtils.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/query/selection/SelectionOperatorUtils.java @@ -67,14 +67,13 @@ import org.apache.pinot.core.indexsegment.IndexSegment; * </ul> */ public class SelectionOperatorUtils { - private SelectionOperatorUtils() { - } - private static final String INT_PATTERN = "##########"; private static final String LONG_PATTERN = "####################"; private static final String FLOAT_PATTERN = "#########0.0####"; private static final String DOUBLE_PATTERN = "###################0.0#########"; private static final DecimalFormatSymbols DECIMAL_FORMAT_SYMBOLS = DecimalFormatSymbols.getInstance(Locale.US); + private SelectionOperatorUtils() { + } /** * Expand <code>'SELECT *'</code> to select all columns with {@link IndexSegment}, order all columns alphabetically. @@ -437,8 +436,7 @@ public class SelectionOperatorUtils { * @param dataSchema data schema. * @return column indices */ - public static int[] getColumnIndices(@Nonnull List<String> selectionColumns, - @Nonnull DataSchema dataSchema) { + public static int[] getColumnIndices(@Nonnull List<String> selectionColumns, @Nonnull DataSchema dataSchema) { int numSelectionColumns = selectionColumns.size(); int[] columnIndices = new int[numSelectionColumns]; int numColumnsInDataSchema = dataSchema.size(); @@ -452,8 +450,6 @@ public class SelectionOperatorUtils { return columnIndices; } - - /** * Extract columns from the row based on the given column indices. * <p>The extracted row is used to build the {@link SelectionResults}. @@ -679,4 +675,12 @@ public class SelectionOperatorUtils { queue.offer(value); } } + + public static List<String> extractSortColumns(List<SelectionSort> sortSequence) { + List<String> columns = new ArrayList<>(); + for (SelectionSort s : sortSequence) { + columns.add(s.column); + } + return columns; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
