apache / apache/datasketches-cpp

Theta sketch output doesn't match between Java and CPP

Open
#460 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
273
Forks
88
Avg merge
2d 2h
Merged PRs (30d)
8

Description

I have run a simple theta sketch computation as below in Java and CPP

```
Union union = Union.builder().buildUnion();
union.update(1);
union.update(2);
CompactSketch compactSketch = union.getResult();
byte[] bytes = union.getResult().toByteArray()
```

Java output:

02 03 03 00 00 1a cc 93 02 00 00 00 00 00 **80 3f**
15 f9 7d cb bd 86 a1 05 c3 97 fc 12 81 70 9d 1e

CPP :

```
updateThetaSketch update_sketch = updateThetaSketch::builder().build();

update_sketch.update(1);
update_sketch.update(2);
auto bytes = update_sketch.compact().serialize();

```

CPP output:

02 03 03 00 00 1a cc 93 02 00 00 00 00 00 **00 00**
15 f9 7d cb bd 86 a1 05 c3 97 fc 12 81 70 9d 1e

The output seems to not match, as we see in bold at the end of first line, 4 bytes "80 3f" is missing in CPP.

Can anyone share why this is so?

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the Java Union and C++ updateThetaSketch examples shown in the issue, then compare their serialized byte layouts around the highlighted bytes. Trace the serialization and deserialization entry points used by both implementations; done means the differing bytes are explained and compatible output or documented format behavior is established.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, java
Domain
data
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.