|
42 | 42 | metadata (e.g. `RLEMetadata`, `RunEndMetadata`) has no upstream `.proto`; tag mismatches |
43 | 43 | silently produce zero/default values in proto3. Add value-level assertions (not just |
44 | 44 | `rowCount > 0`) to integration tests to catch silent corruption. |
| 45 | +- [ ] **Add missing Java-writes→Rust-reads interop tests** — `JavaWritesRustReadsIntegrationTest` |
| 46 | + currently covers: `vortex.primitive` (I32/I64/F32/F64/F16), `vortex.varbin`, `vortex.dict`, |
| 47 | + `vortex.fsst`, `fastlanes.*`/`vortex.alp`/`vortex.alprd` (via cascading OHLC). |
| 48 | + Missing encodings (prioritised by byte-ordering / proto risk): |
| 49 | + - **`vortex.varbinview`** — 16-byte view struct has inlined data + prefix field; byte-order bug |
| 50 | + would survive Java-only round-trip but break Rust read |
| 51 | + - **`vortex.list` / `vortex.listview`** — proto tag mismatch already found once (U32 not U16); |
| 52 | + write path exercises `elements_len` + `offset_ptype` serialisation |
| 53 | + - **`vortex.zstd`** — frame format + optional dict; Rust strict about frame magic |
| 54 | + - **`vortex.sparse`** — patches offset encoding has endianness assumptions |
| 55 | + - **`vortex.zigzag`** — signed int codec, simple but untested end-to-end |
| 56 | + - **`vortex.runend`** — RLE with varying ptypes |
| 57 | + - **`vortex.bool` / `vortex.bytebool`** — boolean columns |
| 58 | + - **`vortex.constant`** — constant-value arrays |
| 59 | + - **`vortex.null`** — null columns |
| 60 | + - **`fastlanes.rle`** — RLE encoding |
| 61 | + Pattern: `VortexWriter.create(ch, SCHEMA, WriteOptions.defaults(), List.of(new XxxEncoding()))` |
| 62 | + then `readStringColumn` / `readLongColumn` via JNI. Run with `./mvnw verify -pl integration -am`. |
45 | 63 | - [ ] lots of repetitions like in every test |
46 | 64 | ```java |
47 | 65 | private static final DType I64 = new DType.Primitive(PType.I64, false); |
|
0 commit comments