Commit 577f816
authored
Validate serialized sketches and preserve capacity in a versioned format (#3)
Stacked on #2 (`modernization/test-runtime`). This completes
construction/deserialization validation and capacity preservation from
that PR's release checklist.
CountMinSketch now writes CMS2 with original capacity and 32-bit UTF-8
key lengths. It still reads legacy bytes and supports explicit legacy
export. Legacy imports accept the original capacity when known; the
documented fallback uses the stored entry count (at least one). Readers
validate exact byte windows, dimensions, allocation budgets, hash
metadata, keys, counts and HLL registers before using them. Counter
overflow and invalid merges fail before mutation.
Validation: 35 tests pass locally, retaining million-item estimator
checks and adding legacy byte fixtures, every truncated prefix,
malformed dimensions/keys, Unicode, empty/partially full capacity
roundtrips and atomic failure cases. Default CMS output and stricter
input rules are breaking changes; SERIALIZATION.md documents the
migration. The next stacked PR supplies declarations and reproducible
package/type validation. This PR is ready for review, not merged or
published.1 parent fb5be62 commit 577f816
10 files changed
Lines changed: 416 additions & 438 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
23 | | - | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
43 | | - | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
46 | 47 | | |
| |||
50 | 51 | | |
51 | 52 | | |
52 | 53 | | |
53 | | - | |
54 | | - | |
55 | | - | |
| 54 | + | |
56 | 55 | | |
57 | 56 | | |
58 | 57 | | |
59 | 58 | | |
60 | 59 | | |
61 | 60 | | |
62 | | - | |
| 61 | + | |
63 | 62 | | |
64 | 63 | | |
65 | 64 | | |
66 | 65 | | |
67 | | - | |
68 | | - | |
69 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
70 | 69 | | |
0 commit comments