This is an automated email from the ASF dual-hosted git repository. leerho pushed a commit to branch Cleanup_phase2 in repository https://gitbox.apache.org/repos/asf/datasketches-java.git
commit 0795a6ea0b3bc63c63cfd1e764ced152429bf99d Author: Lee Rhodes <[email protected]> AuthorDate: Fri Aug 15 17:30:03 2025 -0700 Improve & correct Javadocs Add some missing methods. --- .github/workflows/auto-jdk-matrix.yml | 2 +- .github/workflows/auto-os-matrix.yml | 2 +- .github/workflows/check_cpp_files.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/javadoc.yml | 2 +- .../datasketches/quantiles/DoublesUnionImpl.java | 12 +++++++--- .../quantiles/DirectCompactDoublesSketchTest.java | 2 +- .../quantiles/DirectUpdateDoublesSketchTest.java | 2 +- .../datasketches/quantiles/DoublesMiscTest.java | 27 +++++++++++++++------- .../datasketches/quantiles/DoublesSketchTest.java | 2 +- .../quantiles/DoublesUnionImplTest.java | 2 +- .../datasketches/quantiles/DoublesUtilTest.java | 2 +- .../QuantilesSketchCrossLanguageTest.java | 2 +- 13 files changed, 39 insertions(+), 22 deletions(-) diff --git a/.github/workflows/auto-jdk-matrix.yml b/.github/workflows/auto-jdk-matrix.yml index a556d3e82..2ad97017c 100644 --- a/.github/workflows/auto-jdk-matrix.yml +++ b/.github/workflows/auto-jdk-matrix.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - jdk: [ 21 ] + jdk: [ 24 ] env: JDK_VERSION: ${{ matrix.jdk }} diff --git a/.github/workflows/auto-os-matrix.yml b/.github/workflows/auto-os-matrix.yml index 413b7a957..4aca36642 100644 --- a/.github/workflows/auto-os-matrix.yml +++ b/.github/workflows/auto-os-matrix.yml @@ -21,7 +21,7 @@ jobs: fail-fast: false matrix: - jdk: [ 21 ] + jdk: [ 24 ] os: [ windows-latest, ubuntu-latest, macos-latest ] include: - os: windows-latest diff --git a/.github/workflows/check_cpp_files.yml b/.github/workflows/check_cpp_files.yml index 778859d0d..de53004f6 100644 --- a/.github/workflows/check_cpp_files.yml +++ b/.github/workflows/check_cpp_files.yml @@ -27,7 +27,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v4 with: - java-version: '21' + java-version: '24' distribution: 'temurin' - name: Configure C++ build diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f3fde1de0..d934c4878 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -35,7 +35,7 @@ jobs: with: distribution: 'temurin' cache: 'maven' - java-version: '21' + java-version: '24' - name: Initialize CodeQL uses: github/codeql-action/init@v3 diff --git a/.github/workflows/javadoc.yml b/.github/workflows/javadoc.yml index 977c87b27..42ee0981c 100644 --- a/.github/workflows/javadoc.yml +++ b/.github/workflows/javadoc.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v4 with: - java-version: '21' + java-version: '24' distribution: 'temurin' - name: Echo Java Version diff --git a/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImpl.java b/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImpl.java index 2f2c55bbf..0c7a4468f 100644 --- a/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImpl.java +++ b/src/main/java/org/apache/datasketches/quantiles/DoublesUnionImpl.java @@ -20,6 +20,7 @@ package org.apache.datasketches.quantiles; import static org.apache.datasketches.common.Util.LS; +import static org.apache.datasketches.quantiles.ClassicUtil.checkIsMemorySegmentCompact; import static org.apache.datasketches.quantiles.DoublesUtil.copyToHeap; import java.lang.foreign.MemorySegment; @@ -111,8 +112,8 @@ final class DoublesUnionImpl extends DoublesUnion { } /** - * Returns an updatable Union object that wraps the data of the given MemorySegment - * image of a updatable DoublesSketch. The data of the Union will remain in the MemorySegment. + * Returns an Union object that wraps the data of the given MemorySegment image of a UpdateDoublesSketch. + * The data of the Union will remain in the MemorySegment. * * @param srcSeg A MemorySegment image of an updatable DoublesSketch to be used as the data structure for the union and will be modified. * @param mSegReq the MemorySegmentRequest used if the given MemorySegment needs to expand. @@ -138,7 +139,12 @@ final class DoublesUnionImpl extends DoublesUnion { @Override public void union(final MemorySegment seg) { Objects.requireNonNull(seg); - gadget_ = updateLogic(maxK_, gadget_, DoublesSketch.writableWrap(seg, null)); + if (checkIsMemorySegmentCompact(seg)) { + gadget_ = updateLogic(maxK_, gadget_, DoublesSketch.wrap(seg)); + } else { + gadget_ = updateLogic(maxK_, gadget_, DoublesSketch.writableWrap(seg, null)); + } + gadget_.doublesSV = null; } diff --git a/src/test/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketchTest.java b/src/test/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketchTest.java index 946eca5ca..973b42846 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketchTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DirectCompactDoublesSketchTest.java @@ -97,7 +97,7 @@ public class DirectCompactDoublesSketchTest { final CompactDoublesSketch s1 = DoublesSketch.builder().build().compact(); final MemorySegment seg = MemorySegment.ofBuffer(ByteBuffer.wrap(s1.toByteArray()).order(ByteOrder.nativeOrder())); - final DoublesSketch s2 = DoublesSketch.wrap(seg, MemorySegmentRequest.DEFAULT); + final DoublesSketch s2 = DoublesSketch.wrap(seg); assertTrue(s2.isEmpty()); assertEquals(s2.getN(), 0); assertTrue(Double.isNaN(s2.isEmpty() ? Double.NaN : s2.getMinItem())); diff --git a/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java b/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java index 6ced470e6..17c7b0384 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DirectUpdateDoublesSketchTest.java @@ -230,7 +230,7 @@ public class DirectUpdateDoublesSketchTest { final byte[] arr2 = sketch2.toByteArray(false); assertEquals(arr2.length, sketch2.getSerializedSizeBytes()); - final DoublesSketch sketch3 = DoublesSketch.wrap(MemorySegment.ofArray(arr2), null); + final DoublesSketch sketch3 = DoublesSketch.writableWrap(MemorySegment.ofArray(arr2), null); assertEquals(sketch3.getMinItem(), 0.0); assertEquals(sketch3.getMaxItem(), 1999.0); assertEquals(sketch3.getQuantile(0.5), 1000.0, 10.0); diff --git a/src/test/java/org/apache/datasketches/quantiles/DoublesMiscTest.java b/src/test/java/org/apache/datasketches/quantiles/DoublesMiscTest.java index 049ed7da8..40b349d84 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DoublesMiscTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DoublesMiscTest.java @@ -44,7 +44,7 @@ public class DoublesMiscTest { Assert.assertEquals(bytes.length, curBytes); //convert to MemorySegment final MemorySegment seg = MemorySegment.ofArray(bytes); - final UpdateDoublesSketch sk2 = (UpdateDoublesSketch) DoublesSketch.wrap(seg, null); + final UpdateDoublesSketch sk2 = (UpdateDoublesSketch) DoublesSketch.writableWrap(seg, null); assertEquals(seg.byteSize(), curBytes); sk2.update(3); sk2.update(4); @@ -60,10 +60,8 @@ public class DoublesMiscTest { final UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); - //MemorySegment seg = MemorySegment.ofArray(ByteBuffer.wrap(s1.compact().toByteArray()) - // .asReadOnlyBuffer().order(ByteOrder.nativeOrder()));); final MemorySegment seg = MemorySegment.ofArray(s1.compact().toByteArray()); - final DoublesSketch s2 = DoublesSketch.wrap(seg, null); // compact, so this is ok + final DoublesSketch s2 = DoublesSketch.wrap(seg); // compact, so this is ok assertEquals(s2.getMinItem(), 1.0); assertEquals(s2.getMaxItem(), 2.0); assertEquals(s2.getN(), 2); @@ -123,7 +121,7 @@ public class DoublesMiscTest { public void wrapEmptyUpdateSketch() { final UpdateDoublesSketch s1 = DoublesSketch.builder().build(); final MemorySegment seg = MemorySegment.ofArray(s1.toByteArray()).asReadOnly(); - final UpdateDoublesSketch s2 = (UpdateDoublesSketch) DoublesSketch.wrap(seg, null); + final UpdateDoublesSketch s2 = (UpdateDoublesSketch) DoublesSketch.writableWrap(seg, null); assertTrue(s2.isEmpty()); // ensure the various put calls fail @@ -189,7 +187,7 @@ public class DoublesMiscTest { public void wrapEmptyCompactSketch() { final UpdateDoublesSketch s1 = DoublesSketch.builder().build(); final MemorySegment seg = MemorySegment.ofArray(s1.compact().toByteArray()); - final DoublesSketch s2 = DoublesSketch.wrap(seg, null); // compact, so this is ok + final DoublesSketch s2 = DoublesSketch.wrap(seg); // compact, so this is ok Assert.assertTrue(s2.isEmpty()); } @@ -207,7 +205,7 @@ public class DoublesMiscTest { } @Test - public void heapifyUnionFromCompact() { + public void initializeUnionFromCompactSegment() { final UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); @@ -219,6 +217,19 @@ public class DoublesMiscTest { Assert.assertEquals(s2.getMaxItem(), 3.0); } + @Test + public void unionFromUpdatableSegment() { + final UpdateDoublesSketch s1 = DoublesSketch.builder().build(); + s1.update(1); + s1.update(2); + final MemorySegment seg = MemorySegment.ofArray(s1.toByteArray(false)); + final DoublesUnion u = DoublesUnion.wrap(seg); + u.update(3); + final DoublesSketch s2 = u.getResult(); + Assert.assertEquals(s2.getMinItem(), 1.0); + Assert.assertEquals(s2.getMaxItem(), 3.0); + } + @Test public void wrapUnionFromHeap() { final UpdateDoublesSketch s1 = DoublesSketch.builder().build(); @@ -239,7 +250,7 @@ public class DoublesMiscTest { s1.update(1); s1.update(2); final MemorySegment seg = MemorySegment.ofArray(s1.toByteArray(true)); - DoublesUnion.wrap(seg, null); //not from compact + DoublesUnion.wrap(seg, null); //compact seg fail(); } diff --git a/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java b/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java index 8d64c6bec..bcbb16cc2 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java @@ -43,7 +43,7 @@ public class DoublesSketchTest { for (int i = 0; i < 1000; i++) { heapSketch.update(i); } - final DoublesSketch directSketch = DoublesSketch.wrap(MemorySegment.ofArray(heapSketch.toByteArray(false)), null); + final DoublesSketch directSketch = DoublesSketch.writableWrap(MemorySegment.ofArray(heapSketch.toByteArray(false)), null); assertEquals(directSketch.getMinItem(), 0.0); assertEquals(directSketch.getMaxItem(), 999.0); diff --git a/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java b/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java index dd58f16e3..094b786d3 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DoublesUnionImplTest.java @@ -371,7 +371,7 @@ public class DoublesUnionImplTest { union.union(sketch2); union.union(sketch1); final MemorySegment seg = MemorySegment.ofArray(union.getResult().toByteArray(true)); - final DoublesSketch result = DoublesSketch.wrap(seg, null); + final DoublesSketch result = DoublesSketch.wrap(seg); assertEquals(result.getN(), n1 + n2); assertEquals(result.getK(), k); diff --git a/src/test/java/org/apache/datasketches/quantiles/DoublesUtilTest.java b/src/test/java/org/apache/datasketches/quantiles/DoublesUtilTest.java index 0124b39cb..91f86f74f 100644 --- a/src/test/java/org/apache/datasketches/quantiles/DoublesUtilTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/DoublesUtilTest.java @@ -85,7 +85,7 @@ public class DoublesUtilTest { // DirectCompactDoublesSketch final MemorySegment seg2 = MemorySegment.ofArray(hcds.toByteArray()); - final DirectCompactDoublesSketch dcds = (DirectCompactDoublesSketch) DoublesSketch.wrap(seg2, null); + final DirectCompactDoublesSketch dcds = (DirectCompactDoublesSketch) DoublesSketch.wrap(seg2); final HeapUpdateDoublesSketch target4 = DoublesUtil.copyToHeap(dcds); DoublesSketchTest.testSketchEquality(huds, dcds); DoublesSketchTest.testSketchEquality(dcds, target4); diff --git a/src/test/java/org/apache/datasketches/quantiles/QuantilesSketchCrossLanguageTest.java b/src/test/java/org/apache/datasketches/quantiles/QuantilesSketchCrossLanguageTest.java index 0a4ed3c15..20ceab5ca 100644 --- a/src/test/java/org/apache/datasketches/quantiles/QuantilesSketchCrossLanguageTest.java +++ b/src/test/java/org/apache/datasketches/quantiles/QuantilesSketchCrossLanguageTest.java @@ -92,7 +92,7 @@ public class QuantilesSketchCrossLanguageTest { final int[] nArr = {0, 1, 10, 100, 1000, 10000, 100000, 1000000}; for (final int n: nArr) { final byte[] byteArr = Files.readAllBytes(cppPath.resolve("quantiles_double_n" + n + "_cpp.sk")); - final DoublesSketch sk = DoublesSketch.wrap(MemorySegment.ofArray(byteArr), null); + final DoublesSketch sk = DoublesSketch.wrap(MemorySegment.ofArray(byteArr)); assertTrue(n == 0 ? sk.isEmpty() : !sk.isEmpty()); assertTrue(n > 128 ? sk.isEstimationMode() : !sk.isEstimationMode()); assertEquals(sk.getN(), n); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
