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

gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new d417ee4161e Add helper function for vector offset (#18443)
d417ee4161e is described below

commit d417ee4161e8451b80e175c9e519fcf6c04db734
Author: Adarsh Sanjeev <[email protected]>
AuthorDate: Wed Aug 27 16:35:38 2025 +0530

    Add helper function for vector offset (#18443)
---
 .../org/apache/druid/segment/column/ComplexColumn.java  | 17 +++--------------
 .../druid/segment/vector/ReadableVectorOffset.java      | 13 +++++++++++++
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git 
a/processing/src/main/java/org/apache/druid/segment/column/ComplexColumn.java 
b/processing/src/main/java/org/apache/druid/segment/column/ComplexColumn.java
index 6204d7d219d..3049b9eaf78 100644
--- 
a/processing/src/main/java/org/apache/druid/segment/column/ComplexColumn.java
+++ 
b/processing/src/main/java/org/apache/druid/segment/column/ComplexColumn.java
@@ -118,20 +118,9 @@ public interface ComplexColumn extends BaseColumn
           return vector;
         }
 
-        if (offset.isContiguous()) {
-          final int startOffset = offset.getStartOffset();
-          final int vectorSize = offset.getCurrentVectorSize();
-
-          for (int i = 0; i < vectorSize; i++) {
-            vector[i] = getRowValue(startOffset + i);
-          }
-        } else {
-          final int[] offsets = offset.getOffsets();
-          final int vectorSize = offset.getCurrentVectorSize();
-
-          for (int i = 0; i < vectorSize; i++) {
-            vector[i] = getRowValue(offsets[i]);
-          }
+        final int vectorSize = offset.getCurrentVectorSize();
+        for (int i = 0; i < vectorSize; i++) {
+          vector[i] = getRowValue(offset.getOffset(i));
         }
 
         id = offset.getId();
diff --git 
a/processing/src/main/java/org/apache/druid/segment/vector/ReadableVectorOffset.java
 
b/processing/src/main/java/org/apache/druid/segment/vector/ReadableVectorOffset.java
index 79f47064f84..35cb0059946 100644
--- 
a/processing/src/main/java/org/apache/druid/segment/vector/ReadableVectorOffset.java
+++ 
b/processing/src/main/java/org/apache/druid/segment/vector/ReadableVectorOffset.java
@@ -52,4 +52,17 @@ public interface ReadableVectorOffset extends 
ReadableVectorInspector
    * Throws an exception if "isContiguous" is true.
    */
   int[] getOffsets();
+
+  /**
+   * Gets the offset at a certain index. To be used in situations where the 
caller has no optimized path available for
+   * contiguous processing.
+   */
+  default int getOffset(int index)
+  {
+    if (isContiguous()) {
+      return getStartOffset() + index;
+    } else {
+      return getOffsets()[index];
+    }
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to