Skip to content

Commit 51ff934

Browse files
committed
Record the first wave of Narrow and decimal PRs in the research
Lists the draft PRs and follow-up issues opened on 2026-10-23, and notes in the CD6 brief that it must update the round-trip check that CD2 adds. Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
1 parent b2eba9a commit 51ff934

2 files changed

Lines changed: 31 additions & 11 deletions

File tree

‎research/decimal/04-implementation.md‎

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,19 @@ Later work: LT1 puts both formats into `core` and decides the end of the seriali
8383
workaround. LT2 is the max pass in DecimalByteParts decoding (D16). LT3 is the pushdown of sum,
8484
min and max into the MSP (D19). LT2 and LT3 wait until benchmarks show that they are needed.
8585

86+
## Status
87+
88+
The first wave opened on 2026-10-23 as draft PRs, all based on `develop` at `3974ee069c`:
89+
90+
| ID | PR | Note |
91+
| --- | --- | --- |
92+
| FX1 | #10755 | Three commits, as planned. Its tests use a new `test_harness::assert_serde_error` helper |
93+
| FX2 | #10746 | As planned |
94+
| FX3 | #10745 | Fixes #10623. Non-nullable codes keep the fast path, because they need no fill code |
95+
| CD1 | #10752 | The compress bench enables the default `core` edition, so the decimal scheme uses its v1 variant |
96+
| CD2 | #10753 | Adds `fixtures_build_canonical_decimal_widths`, and two columns at precisions 1 and 3 |
97+
| None | #10747 | The versioning docs describe the scheme variants that #10076 added |
98+
8699
## Graph
87100

88101
Each solid arrow is a hard dependency. Some arrows also follow from other arrows. The graph keeps
@@ -203,17 +216,19 @@ publishes the CD2 fixtures also gates CD5 and CD6, so CD2 is worth landing in wa
203216

204217
## Follow-up issues
205218

206-
These problems came up during planning and are outside the planned PRs. Each one gets its own
207-
issue.
208-
209-
1. Generic structural encodings always sit above other encodings. NR5 does this for `Narrow` only.
210-
2. The decimal `min_max` aggregate panics on a valid value outside the precision, which a file read
211-
can produce.
212-
3. The cast rules of RunEnd, ZigZag, FoR and RLE push nullability casts down without the
213-
`trivially_cast_nullability` guard that FX2 adds to DecimalByteParts.
214-
4. The compat harness: no CI job runs `--mode all`, one failing fixture aborts the whole check, and
215-
the README describes `--git-ref` wrongly.
216-
5. Stale versioning docs about the decimal scheme and per-edition scheme configuration.
219+
These problems came up during planning and the first wave of PRs. They are outside the planned
220+
PRs, and each one has its own issue.
221+
222+
| Issue | Problem |
223+
| --- | --- |
224+
| #10748 | Generic structural encodings always sit above other encodings. NR5 does this for `Narrow` only |
225+
| #10749 | Decimal `scalar_at` and `min_max` panic on a stored value outside the precision, which a file read can produce |
226+
| #10750 | Seven cast rules (RunEnd, ZigZag, FoR, RLE, ALP, ALP-RD, DateTimeParts) push nullability casts without the guard that FX2 adds to DecimalByteParts |
227+
| #10751 | The FoR scheme bit-packs its child outside the allowed schemes, so its child skips the edition filter |
228+
| #10754 | The compat harness: no CI job runs `--mode all`, one failing fixture stops the whole check, and the README describes `--git-ref` wrongly |
229+
| #10756 | Corrupt ALP-RD, RLE and RunEnd metadata can panic a file read |
230+
231+
The stale versioning docs needed no issue, because #10747 fixes them.
217232

218233
## Risks
219234

‎research/decimal/agents/briefs/03-canonical-decimal.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,6 +1221,11 @@ Steps:
12211221

12221222
Tests:
12231223

1224+
- Change `legacy_decimal_fixtures_keep_stored_widths` in
1225+
`vortex-test/compat-gen/src/fixtures/arrays/synthetic/mod.rs`, which CD2 (#10753) adds. Its
1226+
file round-trip check asserts that a read keeps the stored width of each old column. After CD6
1227+
the read converts old nodes, so the check must assert the read results of the CD2 tables
1228+
instead. Keep its in-memory width check.
12241229
- New in `vtable/plugin/tests.rs`. They build nodes with `ArrayDeserialization::new` and
12251230
hand-written `DecimalMetadata`, as
12261231
`encodings/decimal-byte-parts/src/decimal_byte_parts/plugin/tests.rs:317-328` does. They build no

0 commit comments

Comments
 (0)