From a94a7e2784261be184fee5ea9c4d14506cb93d53 Mon Sep 17 00:00:00 2001 From: jaideeppyne Date: Thu, 1 Oct 2026 11:27:42 +0530 Subject: [PATCH] Fix theta preamble count for legacy single-item images --- .../org/apache/datasketches/theta/PreambleUtil.java | 2 +- .../apache/datasketches/theta/PreambleUtilTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/datasketches/theta/PreambleUtil.java b/src/main/java/org/apache/datasketches/theta/PreambleUtil.java index f8239511f..ec6ad22aa 100644 --- a/src/main/java/org/apache/datasketches/theta/PreambleUtil.java +++ b/src/main/java/org/apache/datasketches/theta/PreambleUtil.java @@ -278,7 +278,7 @@ static String preambleToString(final MemorySegment seg) { final int seedHash = extractSeedHash(seg); //assumes preLongs == 1; empty or singleItem - int curCount = singleItem ? 1 : 0; + int curCount = empty ? 0 : 1; float p = (float) 1.0; //preLongs 1 or 2 long thetaLong = Long.MAX_VALUE; //preLongs 1 or 2 long thetaULong = thetaLong; //preLongs 1, 2 or 3 diff --git a/src/test/java/org/apache/datasketches/theta/PreambleUtilTest.java b/src/test/java/org/apache/datasketches/theta/PreambleUtilTest.java index 23b8abde0..973c15438 100644 --- a/src/test/java/org/apache/datasketches/theta/PreambleUtilTest.java +++ b/src/test/java/org/apache/datasketches/theta/PreambleUtilTest.java @@ -106,6 +106,16 @@ public void checkToStringWithPrelongsOf2() { println(ThetaSketch.toString(bytes)); } + @Test + public void checkHistoricalSingleItemToString() { + final byte[] bytes = SingleItemSketch.create(1).toByteArray(); + bytes[5] &= (byte) ~PreambleUtil.SINGLEITEM_FLAG_MASK; + + final String summary = PreambleUtil.preambleToString(bytes); + assertTrue(summary.contains(" 5 SINGLE_ITEM : false")); + assertTrue(summary.contains("Bytes 8-11 : CurrentCount : 1")); + } + @Test public void checkPreambleToStringExceptions() { byte[] byteArr = new byte[7];