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

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new e038498c70 GH-25659: [Java] Add DefaultVectorComparators for Large 
types (#37887)
e038498c70 is described below

commit e038498c70207df1ac64b1aa276a5fd5e3cd306b
Author: James Duong <[email protected]>
AuthorDate: Tue Sep 26 13:52:07 2023 -0700

    GH-25659: [Java] Add DefaultVectorComparators for Large types (#37887)
    
    ### Rationale for this change
    Support additional vector types in DefaultVectorComparators to make 
arrow-algorithm easier to use.
    
    ### What changes are included in this PR?
    Add DefaultVectorComparators for large vector types (LargeVarCharVector and 
LargeVarBinaryVector).
    
    ### Are these changes tested?
    Yes.
    
    ### Are there any user-facing changes?
    No.
    * Closes: #25659
    
    Authored-by: James Duong <[email protected]>
    Signed-off-by: David Li <[email protected]>
---
 .../algorithm/sort/DefaultVectorComparators.java   | 16 ++++++-------
 .../sort/TestDefaultVectorComparator.java          | 26 ++++++++++++++++++++++
 2 files changed, 34 insertions(+), 8 deletions(-)

diff --git 
a/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/DefaultVectorComparators.java
 
b/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/DefaultVectorComparators.java
index 99d66f9426..4f9c8b7d71 100644
--- 
a/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/DefaultVectorComparators.java
+++ 
b/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/DefaultVectorComparators.java
@@ -25,7 +25,6 @@ import java.time.Duration;
 import org.apache.arrow.memory.util.ArrowBufPointer;
 import org.apache.arrow.memory.util.ByteFunctionHelpers;
 import org.apache.arrow.vector.BaseFixedWidthVector;
-import org.apache.arrow.vector.BaseVariableWidthVector;
 import org.apache.arrow.vector.BigIntVector;
 import org.apache.arrow.vector.BitVector;
 import org.apache.arrow.vector.DateDayVector;
@@ -50,6 +49,7 @@ import org.apache.arrow.vector.UInt2Vector;
 import org.apache.arrow.vector.UInt4Vector;
 import org.apache.arrow.vector.UInt8Vector;
 import org.apache.arrow.vector.ValueVector;
+import org.apache.arrow.vector.VariableWidthVector;
 import org.apache.arrow.vector.complex.BaseRepeatedValueVector;
 
 /**
@@ -112,7 +112,7 @@ public class DefaultVectorComparators {
       } else if (vector instanceof TimeStampVector) {
         return (VectorValueComparator<T>) new TimeStampComparator();
       }
-    } else if (vector instanceof BaseVariableWidthVector) {
+    } else if (vector instanceof VariableWidthVector) {
       return (VectorValueComparator<T>) new VariableWidthComparator();
     } else if (vector instanceof BaseRepeatedValueVector) {
       VectorValueComparator<?> innerComparator =
@@ -675,14 +675,14 @@ public class DefaultVectorComparators {
   }
 
   /**
-   * Default comparator for {@link 
org.apache.arrow.vector.BaseVariableWidthVector}.
+   * Default comparator for {@link 
org.apache.arrow.vector.VariableWidthVector}.
    * The comparison is in lexicographic order, with null comes first.
    */
-  public static class VariableWidthComparator extends 
VectorValueComparator<BaseVariableWidthVector> {
+  public static class VariableWidthComparator extends 
VectorValueComparator<VariableWidthVector> {
 
-    private ArrowBufPointer reusablePointer1 = new ArrowBufPointer();
+    private final ArrowBufPointer reusablePointer1 = new ArrowBufPointer();
 
-    private ArrowBufPointer reusablePointer2 = new ArrowBufPointer();
+    private final ArrowBufPointer reusablePointer2 = new ArrowBufPointer();
 
     @Override
     public int compare(int index1, int index2) {
@@ -699,7 +699,7 @@ public class DefaultVectorComparators {
     }
 
     @Override
-    public VectorValueComparator<BaseVariableWidthVector> createNew() {
+    public VectorValueComparator<VariableWidthVector> createNew() {
       return new VariableWidthComparator();
     }
   }
@@ -743,7 +743,7 @@ public class DefaultVectorComparators {
     @Override
     public VectorValueComparator<BaseRepeatedValueVector> createNew() {
       VectorValueComparator<T> newInnerComparator = 
innerComparator.createNew();
-      return new RepeatedValueComparator(newInnerComparator);
+      return new RepeatedValueComparator<>(newInnerComparator);
     }
 
     @Override
diff --git 
a/java/algorithm/src/test/java/org/apache/arrow/algorithm/sort/TestDefaultVectorComparator.java
 
b/java/algorithm/src/test/java/org/apache/arrow/algorithm/sort/TestDefaultVectorComparator.java
index 6205119774..bdae85110a 100644
--- 
a/java/algorithm/src/test/java/org/apache/arrow/algorithm/sort/TestDefaultVectorComparator.java
+++ 
b/java/algorithm/src/test/java/org/apache/arrow/algorithm/sort/TestDefaultVectorComparator.java
@@ -35,6 +35,8 @@ import org.apache.arrow.vector.Float4Vector;
 import org.apache.arrow.vector.Float8Vector;
 import org.apache.arrow.vector.IntVector;
 import org.apache.arrow.vector.IntervalDayVector;
+import org.apache.arrow.vector.LargeVarBinaryVector;
+import org.apache.arrow.vector.LargeVarCharVector;
 import org.apache.arrow.vector.SmallIntVector;
 import org.apache.arrow.vector.TimeMicroVector;
 import org.apache.arrow.vector.TimeMilliVector;
@@ -47,6 +49,9 @@ import org.apache.arrow.vector.UInt1Vector;
 import org.apache.arrow.vector.UInt2Vector;
 import org.apache.arrow.vector.UInt4Vector;
 import org.apache.arrow.vector.UInt8Vector;
+import org.apache.arrow.vector.ValueVector;
+import org.apache.arrow.vector.VarBinaryVector;
+import org.apache.arrow.vector.VarCharVector;
 import org.apache.arrow.vector.complex.ListVector;
 import org.apache.arrow.vector.testing.ValueVectorDataPopulator;
 import org.apache.arrow.vector.types.TimeUnit;
@@ -911,4 +916,25 @@ public class TestDefaultVectorComparator {
       assertTrue(comparator.checkNullsOnCompare());
     }
   }
+
+  @Test
+  public void testVariableWidthDefaultComparators() {
+    try (VarCharVector vec = new VarCharVector("test", allocator)) {
+      verifyVariableWidthComparatorReturned(vec);
+    }
+    try (VarBinaryVector vec = new VarBinaryVector("test", allocator)) {
+      verifyVariableWidthComparatorReturned(vec);
+    }
+    try (LargeVarCharVector vec = new LargeVarCharVector("test", allocator)) {
+      verifyVariableWidthComparatorReturned(vec);
+    }
+    try (LargeVarBinaryVector vec = new LargeVarBinaryVector("test", 
allocator)) {
+      verifyVariableWidthComparatorReturned(vec);
+    }
+  }
+
+  private static <V extends ValueVector> void 
verifyVariableWidthComparatorReturned(V vec) {
+    VectorValueComparator<V> comparator = 
DefaultVectorComparators.createDefaultComparator(vec);
+    assertEquals(DefaultVectorComparators.VariableWidthComparator.class, 
comparator.getClass());
+  }
 }

Reply via email to