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 2021/07/01 17:38:46 UTC

[incubator-pinot] branch master updated: Fix the memory issue for selection query with large limit (#7112)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new ea3566f  Fix the memory issue for selection query with large limit (#7112)
ea3566f is described below

commit ea3566f9b633c067ff691be859596837235dd7bb
Author: Xiaotian (Jackie) Jiang <17...@users.noreply.github.com>
AuthorDate: Thu Jul 1 10:38:22 2021 -0700

    Fix the memory issue for selection query with large limit (#7112)
    
    Fix the memory issue for selection query with large limit
---
 .../pinot/core/query/selection/SelectionOperatorUtils.java       | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

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 84d8b85..7fd6b95 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
@@ -404,12 +404,12 @@ public class SelectionOperatorUtils {
    * Reduces a collection of {@link DataTable}s to selection rows for selection queries without <code>ORDER BY</code>.
    * (Broker side)
    */
-  public static List<Object[]> reduceWithoutOrdering(Collection<DataTable> dataTables, int selectionSize) {
-    List<Object[]> rows = new ArrayList<>(selectionSize);
+  public static List<Object[]> reduceWithoutOrdering(Collection<DataTable> dataTables, int limit) {
+    List<Object[]> rows = new ArrayList<>(Math.min(limit, SelectionOperatorUtils.MAX_ROW_HOLDER_INITIAL_CAPACITY));
     for (DataTable dataTable : dataTables) {
       int numRows = dataTable.getNumberOfRows();
       for (int rowId = 0; rowId < numRows; rowId++) {
-        if (rows.size() < selectionSize) {
+        if (rows.size() < limit) {
           rows.add(extractRowFromDataTable(dataTable, rowId));
         } else {
           return rows;
@@ -467,7 +467,8 @@ public class SelectionOperatorUtils {
    * @param selectionColumns selection columns.
    * @return {@link ResultTable} object results.
    */
-  public static ResultTable renderResultTableWithoutOrdering(List<Object[]> rows, DataSchema dataSchema, List<String> selectionColumns) {
+  public static ResultTable renderResultTableWithoutOrdering(List<Object[]> rows, DataSchema dataSchema,
+      List<String> selectionColumns) {
     int numRows = rows.size();
     List<Object[]> resultRows = new ArrayList<>(numRows);
 

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