Commit 58d30b2
committed
[python] Probe one null row so decimal-precision casts are validated
can_execute_cast probed an empty array, which only resolves the PyArrow cast
kernel. Some kernels still reject the target type parameters on non-empty input:
INT -> DECIMAL(10, 2) has a kernel but needs precision >= 12 to hold an int's
range at scale 2 (BIGINT needs >= 21), so the empty probe accepted it, the alter
succeeded, and reading an old file failed with ArrowInvalid "Precision is not
great enough".
Probe a single null row instead. It triggers PyArrow's static type-parameter
validation (decimal precision sufficiency) while a null value avoids per-value
parse/overflow errors that safe=False -- matching the read path -- tolerates.1 parent ba2eb84 commit 58d30b2
3 files changed
Lines changed: 39 additions & 8 deletions
File tree
- paimon-python/pypaimon
- casting
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
239 | 239 | | |
240 | 240 | | |
241 | 241 | | |
242 | | - | |
243 | | - | |
244 | | - | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
245 | 250 | | |
246 | | - | |
| 251 | + | |
247 | 252 | | |
248 | 253 | | |
249 | 254 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
283 | 283 | | |
284 | 284 | | |
285 | 285 | | |
286 | | - | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
287 | 298 | | |
288 | 299 | | |
289 | | - | |
| 300 | + | |
290 | 301 | | |
291 | 302 | | |
292 | | - | |
| 303 | + | |
293 | 304 | | |
294 | 305 | | |
295 | 306 | | |
| |||
Lines changed: 16 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| |||
728 | 728 | | |
729 | 729 | | |
730 | 730 | | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
731 | 746 | | |
732 | 747 | | |
733 | 748 | | |
| |||
0 commit comments