feat: add built-in async Jev SQL functions - #2653
shehabgamin wants to merge 32 commits into
Conversation
Gold Data ReportNotes
Commit Information
Summary
DetailsGold Data Metrics
|
Spark 3.5.9 Test ReportCommit Information
Test Summary
Test DetailsError CountsPassed Tests Diff(empty) Failed Tests |
Spark 4.2.0 Test ReportCommit Information
Test Summary
Test DetailsError CountsPassed Tests Diff(empty) Failed Tests(truncated) |
Ibis Test ReportCommit Information
Test Summary
Test DetailsError CountsPassed Tests Diff--- before.txt 2026-09-24 04:48:29.522222505 +0000
+++ after.txt 2026-09-24 04:48:30.028221592 +0000
@@ -533 +532,0 @@
-ibis/backends/tests/test_export.py::test_table_to_csv[pyspark]Failed Tests |
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #2653 +/- ##
==========================================
- Coverage 80.59% 79.09% -1.50%
==========================================
Files 1026 1032 +6
Lines 218276 222562 +4286
==========================================
+ Hits 175913 176036 +123
- Misses 42363 46526 +4163
*This pull request uses carry forward flags. Click here to find out more.
... and 57 files with indirect coverage changes 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved critical contract and numeric-preservation defects, plus batching and aggregate-planning issues, block approval.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 2
Open (3)
What changed in this PR
Adds built-in asynchronous Jev SQL functions backed by TypeSafe, with batching, retries, validation, usage accounting, tests, benchmarks, and documentation. Review identified unresolved contract, numeric-preservation, batching, and aggregate-planning issues.
Changes:
- Adds Jev UDFs, HTTP transport, response conversion, and distributed serialization.
- Integrates async planning and aggregate/join/sort rewrites.
- Adds integration tests, mock services, benchmarks, and user documentation.
| File | Reviewed changes |
|---|---|
scripts/jev/README.md |
Benchmark usage documentation |
scripts/jev/benchmark.py |
Jev performance benchmark |
scripts/jev/__init__.py |
Jev package marker |
python/pysail/tests/spark/function/test_jev.py |
Jev integration and contract tests |
python/pysail/testing/jev.py |
Deterministic Jev mock service |
docs/guide/integrations/jev.md |
Jev integration documentation |
docs/guide/functions/index.md |
Function guide updates |
crates/sail-session/src/planner.rs |
Async-function planning integration |
crates/sail-plan/src/resolver/expression/function.rs |
Plan option redaction |
crates/sail-plan/src/function/scalar/mod.rs |
Jev function registration |
crates/sail-plan/src/function/scalar/jev.rs |
Jev planner function definitions |
crates/sail-plan/src/function/mod.rs |
Async expression rewrites |
crates/sail-function/src/scalar/mod.rs |
Jev scalar module export |
crates/sail-function/src/scalar/jev/transport.rs |
Batching, limits, HTTP execution, and retries |
crates/sail-function/src/scalar/jev/output.rs |
Jev result array construction |
crates/sail-function/src/scalar/jev/mod.rs |
Jev UDF implementation and input handling |
crates/sail-function/src/scalar/jev/contract.rs |
Request/response validation and retry parsing |
crates/sail-function/Cargo.toml |
Jev dependencies |
crates/sail-execution/src/proto/codec.rs |
Distributed Jev UDF serialization |
Cargo.lock |
Dependency lock updates |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Adds built-in Jev SQL functions (
jev_noul,jev_choice,jev_score,jev_system_one,jev_models) backed by TypeSafe's API, with async execution, batching, retries, and usage accounting