Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge evaluator work to partiql-eval branch #1362

Merged
merged 27 commits into from
Feb 5, 2024
Merged

Conversation

rchowell
Copy link
Contributor

@rchowell rchowell commented Feb 5, 2024

Description

This merges the team's work from partiql-plugin-impl to partiql-eval.

Yes

License Information

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

rchowell and others added 26 commits December 22, 2023 13:04
- Improve cast lookup logic and performance
- Caches the PartiQL function signatures
- Enables passing available function signatures in the session
- Adds partiql-plugin
* Adds lt, lte, gt, gte

* Adds eq and not
Adds unary, logical, binary arithmetic, and concat operators
* add conformance reporting
* Isolates local variable resolution logic (#1344)

---------

Co-authored-by: R. C. Howell <[email protected]>
- partiql-cli
    - Removed ServiceLoaderUtil and debug to fix build
    - This can be ignored
- partiql-eval
    - Added the "Symbols" utility which is responsible for linking catalog references to connectors
    - Update static and dynamic calls to load functions via connectors (symbols)
    - Update global expression to load globals via connectors (symbols)
    - Added ExprCast from Yingtao's work
- partiql-parser
    - This change is in `main`. It adds qualified names to functions
    - This can be ignored
    - I should probably rebase partiql-plugin-impl on main ASAP
- partiql-plan
    - Adds a catalog.item with value and fn variants for resolved catalog entities
    - Adds a CAST reference
    - Adds an explicit Rex.Op.Cast
- partiql-planner
    - Delete all hand-written IRs as we can generate internal IRs now (hence the removals)
    - CastTable replaces TypeLattice and holds cast information
    - Cleanup of FnMatch and FnResolver
    - Updates to PlanTyper to use the improved Env
    - Improvements to Env which delegates path resolution to PathResolver
    - PathResolver implementations apply our name resolution rules and search catalogs via connector metadata
    - Env returns untyped expressions which PlanTyper is responsible for finishing. See comments in Env.kt
    - Note that PathResolverAgg is hardcoded because aggregations are hardcoded into the PartiQL grammar as of now. Our AST probably shouldn't have an aggregate expression as a table-value function is not a row-value expression
    - There are 11 PlanTyperTestsPorted failing because of assertions on error messages
- partiql-spi
    - This includes extensions to the SPI for functions as well as the SqlConnector base
    - SqlConnector base provides the SQL-99 builtins
    - All builtins are located in org.partiql.spi.connector.sql.builtins
    - The Agg are public at-the-moment to allow the planner and eval to access them directly
 - plugins (partiql-local / partiql-memory)
    -  Updated both to the interfaces
    - partiql-memory now uses an in-memory filesystem like tree for the catalog
    - Each MemoryCatalog entry holds a PartiQLValue and its StaticType
- test/partiql-tests-runner
    - Minors updates to EvalExecutor due to partiql-memory changes. 


---------

Co-authored-by: John Ed Quinn <[email protected]>
Co-authored-by: John Ed Quinn <[email protected]>
Co-authored-by: yliuuuu <[email protected]>
@rchowell rchowell changed the title Partiql eval merge Merge evaluator work to partiql-eval branch Feb 5, 2024
Copy link

github-actions bot commented Feb 5, 2024

Conformance comparison report-Cross Engine

Base (legacy) eval +/-
% Passing 92.47% 25.23% -67.24%
✅ Passing 5380 1468 -3912
❌ Failing 438 4350 3912
🔶 Ignored 0 0 0
Total Tests 5818 5818 0
Number passing in both: 1465

Number failing in both: 435

Number passing in legacy engine but fail in eval engine: 3915

Number failing in legacy engine but pass in eval engine: 3
⁉️ CONFORMANCE REPORT REGRESSION DETECTED ⁉️
The complete list can be found in GitHub CI summary, either from Step Summary or in the Artifact.
The following test(s) are failing in legacy but pass in eval. Before merging, confirm they are intended to pass:

Click here to see
  • nullif valid cases{first:"missing",second:"missing",result:missing}, compileOption: PERMISSIVE

  • nullif valid cases{first:"missing",second:"missing",result:missing}, compileOption: LEGACY

  • missing and true, compileOption: PERMISSIVE

@codecov-commenter
Copy link

Codecov Report

All modified and coverable lines are covered by tests ✅

❗ No coverage uploaded for pull request base (partiql-eval@bb0342d). Click here to learn what that means.

Additional details and impacted files
@@               Coverage Diff               @@
##             partiql-eval    #1362   +/-   ##
===============================================
  Coverage                ?   55.83%           
  Complexity              ?     1014           
===============================================
  Files                   ?      136           
  Lines                   ?    11409           
  Branches                ?     2263           
===============================================
  Hits                    ?     6370           
  Misses                  ?     4401           
  Partials                ?      638           
Flag Coverage Δ
EXAMPLES 80.28% <0.00%> (?)
LANG 54.71% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@rchowell rchowell requested a review from yliuuuu February 5, 2024 21:11
@rchowell rchowell merged commit 27081a7 into partiql-eval Feb 5, 2024
10 checks passed
@rchowell rchowell deleted the partiql-eval-merge branch February 5, 2024 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants