Commit 0bdef33
Exclude float columns from delta encoding
Delta encoding violated spec §2.3's MUST round-trip requirement for float
columns: prev + (cur - prev) in IEEE-754 does not recover the original
double's bit pattern for arbitrary values, and round(diff, 10) at the
encode step compounded the loss. Benchmark data exposed this as e.g.
1865.43 decoding to 1865.4299999999994.
Restrict SparseMode.DELTA eligibility to int-only columns. Float columns
now fall through to standard value encoding, which round-trips exactly
via Python's shortest-round-trip str(float). Int delta encoding (the
common case: IDs, counts, timestamps) is unchanged.
Regression test covers multiple precision regimes — benchmark values,
math.pi/math.e, 0.1+0.2, extreme exponents, negatives — so a future
round-to-N workaround cannot sneak through.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 6824a8a commit 0bdef33
2 files changed
Lines changed: 41 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
177 | 181 | | |
178 | | - | |
179 | | - | |
| 182 | + | |
| 183 | + | |
180 | 184 | | |
181 | | - | |
182 | | - | |
| 185 | + | |
| 186 | + | |
183 | 187 | | |
184 | 188 | | |
185 | 189 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
107 | 108 | | |
108 | 109 | | |
109 | 110 | | |
110 | | - | |
| 111 | + | |
111 | 112 | | |
112 | 113 | | |
113 | | - | |
| 114 | + | |
114 | 115 | | |
115 | 116 | | |
116 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
117 | 147 | | |
118 | 148 | | |
0 commit comments