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]

Reply via email to