Commit f448a72
fix: skip the planner rebind when inlining is unchanged
`with_python_udf_inlining` rebuilds the handle's codecs and rebinds the
session's planner to them, which is state shared with every other handle on
that session. Asking for the setting a context already has changes nothing,
so it should not pay that side effect: a defensive no-op toggle on `ctx`
otherwise drags the planner back onto `ctx`'s codecs and silently undoes a
codec installed through another handle.
Returning the existing codecs is observationally equivalent to the rebuild
otherwise -- it wraps the same inner codec in a fresh `Python*Codec` -- so
the guard is only visible through that side effect. The new test fails
without it with `assert 0 > 0`.
Also pins the divergence the rebind creates. The planner carries the codecs
of whichever handle installed it last; every other path on a context uses
that context's own codec field. Those can be different handles, and then
`Expr.to_bytes(ctx)` and `ctx.sql(...)` encode with different codecs on the
same `ctx`. Stated as a rule in the FFI guide rather than left implicit in
the description of the mechanism.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 2425559 commit f448a72
3 files changed
Lines changed: 121 additions & 2 deletions
File tree
- crates/core/src
- docs/source/contributor-guide
- examples/datafusion-ffi-query-planner-example/python/tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1508 | 1508 | | |
1509 | 1509 | | |
1510 | 1510 | | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
| 1516 | + | |
| 1517 | + | |
| 1518 | + | |
| 1519 | + | |
| 1520 | + | |
| 1521 | + | |
| 1522 | + | |
| 1523 | + | |
| 1524 | + | |
| 1525 | + | |
| 1526 | + | |
| 1527 | + | |
1511 | 1528 | | |
1512 | 1529 | | |
1513 | 1530 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
351 | 351 | | |
352 | 352 | | |
353 | 353 | | |
354 | | - | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
355 | 377 | | |
356 | 378 | | |
357 | 379 | | |
| |||
Lines changed: 81 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | | - | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
535 | 536 | | |
536 | 537 | | |
537 | 538 | | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
538 | 618 | | |
539 | 619 | | |
540 | 620 | | |
| |||
0 commit comments