Commit ed347f2
authored
feat(writer): honor write.parquet.* via ParquetWriterBuilder::from_table_properties (#2561)
## Which issue does this PR close?
N/A — no tracking issue.
## What changes are included in this PR?
Only the DataFusion `INSERT INTO` path honored `write.parquet.*` table
properties, and only the content-defined-chunking (CDC) keys, via a
hand-rolled translation inlined in `IcebergWriteExec`. Anything writing
through the writer stack directly (`DataFileWriter` →
`ParquetWriterBuilder`) silently fell back to parquet-rs defaults.
This PR moves that translation behind a reusable constructor:
- Add `ParquetWriterBuilder::from_table_properties(&TableProperties,
schema)`, the single place that maps `write.parquet.*` into
`WriterProperties`. It currently translates the CDC keys
(`write.parquet.content-defined-chunking.*`); other keys still fall back
to parquet-rs defaults and can be added here later.
- Add a chainable `with_match_mode` setter so the field match mode can
be overridden — DataFusion needs name-based matching since its Arrow
batches carry no field-id metadata.
- Refactor the DataFusion `insert_into` writer to build via
`from_table_properties`, reusing the `TableProperties` it already parses
and dropping the inline CDC translation.
Additive only: `new` and `new_with_match_mode` are unchanged; no
breaking changes.
## Are these changes tested?
- Unit tests in `parquet_writer.rs`: CDC is off by default, and CDC
properties propagate through `build()` to the writer's
`WriterProperties` — asserted on the getter rather than by re-reading a
written file, so future `write.parquet.*` options only need an assertion
on their corresponding getter.
- Existing `test_insert_into*` DataFusion integration tests cover the
refactored path, which is behaviorally unchanged.1 parent c915c31 commit ed347f2
3 files changed
Lines changed: 123 additions & 17 deletions
File tree
- crates
- iceberg
- src/writer/file_writer
- integrations/datafusion/src/physical_plan
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3205 | 3205 | | |
3206 | 3206 | | |
3207 | 3207 | | |
| 3208 | + | |
3208 | 3209 | | |
3209 | 3210 | | |
| 3211 | + | |
3210 | 3212 | | |
3211 | 3213 | | |
3212 | 3214 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
60 | 64 | | |
61 | 65 | | |
62 | 66 | | |
| |||
73 | 77 | | |
74 | 78 | | |
75 | 79 | | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
76 | 111 | | |
77 | 112 | | |
78 | 113 | | |
| |||
2279 | 2314 | | |
2280 | 2315 | | |
2281 | 2316 | | |
| 2317 | + | |
| 2318 | + | |
| 2319 | + | |
| 2320 | + | |
| 2321 | + | |
| 2322 | + | |
| 2323 | + | |
| 2324 | + | |
| 2325 | + | |
| 2326 | + | |
| 2327 | + | |
| 2328 | + | |
| 2329 | + | |
| 2330 | + | |
| 2331 | + | |
| 2332 | + | |
| 2333 | + | |
| 2334 | + | |
| 2335 | + | |
| 2336 | + | |
| 2337 | + | |
| 2338 | + | |
| 2339 | + | |
| 2340 | + | |
| 2341 | + | |
| 2342 | + | |
| 2343 | + | |
| 2344 | + | |
| 2345 | + | |
| 2346 | + | |
| 2347 | + | |
| 2348 | + | |
| 2349 | + | |
| 2350 | + | |
| 2351 | + | |
| 2352 | + | |
| 2353 | + | |
| 2354 | + | |
| 2355 | + | |
| 2356 | + | |
| 2357 | + | |
| 2358 | + | |
| 2359 | + | |
| 2360 | + | |
| 2361 | + | |
| 2362 | + | |
| 2363 | + | |
| 2364 | + | |
| 2365 | + | |
| 2366 | + | |
| 2367 | + | |
| 2368 | + | |
| 2369 | + | |
| 2370 | + | |
| 2371 | + | |
| 2372 | + | |
| 2373 | + | |
| 2374 | + | |
| 2375 | + | |
| 2376 | + | |
| 2377 | + | |
| 2378 | + | |
| 2379 | + | |
| 2380 | + | |
| 2381 | + | |
| 2382 | + | |
| 2383 | + | |
| 2384 | + | |
| 2385 | + | |
| 2386 | + | |
| 2387 | + | |
| 2388 | + | |
| 2389 | + | |
| 2390 | + | |
| 2391 | + | |
| 2392 | + | |
| 2393 | + | |
2282 | 2394 | | |
Lines changed: 7 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
49 | 48 | | |
50 | 49 | | |
51 | 50 | | |
| |||
225 | 224 | | |
226 | 225 | | |
227 | 226 | | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
240 | 232 | | |
241 | | - | |
242 | | - | |
| 233 | + | |
| 234 | + | |
243 | 235 | | |
244 | 236 | | |
245 | 237 | | |
| |||
0 commit comments