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

Add Boxed Variant interface & Boxed Ion implementation #540

Merged
merged 3 commits into from
Feb 3, 2025

Conversation

jpschorr
Copy link
Contributor

@jpschorr jpschorr commented Jan 31, 2025

This PR roughs in boxed variants and an implementation of ion values that uses the boxed variant interface.

There are still todos and some additional test failures that will be addressed by future PRs that add functionality.

Of note, that there are expected to be ~80 new conformance test failures that will eventually be fixed as well as passing an additional ~12 conformance tests after all features from #536 are incorporated.

To see the ultimate end-point of this integration, refer to #536 and note the test coverage and conformance test results.


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

Copy link

codecov bot commented Jan 31, 2025

Codecov Report

Attention: Patch coverage is 61.32931% with 256 lines in your changes missing coverage. Please review.

Project coverage is 80.49%. Comparing base (b056bcf) to head (6535718).
Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
extension/partiql-extension-ion/src/boxed_ion.rs 59.43% 122 Missing and 7 partials ⚠️
partiql-value/src/variant.rs 65.21% 31 Missing and 1 partial ⚠️
extension/partiql-extension-ion/src/util.rs 62.66% 24 Missing and 4 partials ⚠️
partiql-value/src/datum.rs 24.00% 19 Missing ⚠️
partiql-value/src/value.rs 60.52% 13 Missing and 2 partials ⚠️
partiql-eval/src/plan.rs 72.91% 8 Missing and 5 partials ⚠️
partiql-eval/src/eval/expr/mod.rs 0.00% 6 Missing ⚠️
partiql-value/src/boxed_variant.rs 78.94% 4 Missing ⚠️
partiql-ast-passes/src/error.rs 0.00% 3 Missing ⚠️
partiql-eval/src/eval/eval_expr_wrapper.rs 66.66% 2 Missing ⚠️
... and 4 more

❌ Your patch status has failed because the patch coverage (61.32%) is below the target coverage (85.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #540      +/-   ##
==========================================
- Coverage   81.17%   80.49%   -0.68%     
==========================================
  Files          90       95       +5     
  Lines       19727    20266     +539     
  Branches    19727    20266     +539     
==========================================
+ Hits        16014    16314     +300     
- Misses       3293     3520     +227     
- Partials      420      432      +12     

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

Copy link

github-actions bot commented Jan 31, 2025

Conformance comparison report

Base (2a3dd4b) 08a95cd +/-
% Passing 86.97% 85.72% -1.24%
✅ Passing 5591 5511 -80
❌ Failing 838 918 80
🔶 Ignored 0 0 0
Total Tests 6429 6429 0

Number passing in both: 5511

Number failing in both: 838

Number passing in Base (2a3dd4b) but now fail: 80

Number failing in Base (2a3dd4b) but now pass: 0

⁉️ CONFORMANCE REPORT REGRESSION DETECTED ⁉️. The following test(s) were previously passing but now fail:

Click here to see
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_text_types_compared_by_lexicographical_ordering_of_unicode_scalar_desc
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::strict_exists_valid_cases_param_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_decimal_result_null_decimal
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_struct_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_clob_result_null_clob
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_structs_should_be_ordered_by_data_types_asc_nulls_last_as_default_for_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_decimal_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::strict_exists_valid_cases_param_1_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_lists_items_should_be_ordered_by_data_types_desc_nulls_first_as_default_for_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_struct_result_null_struct
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_symbol_result_null_symbol
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_struct_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::permissive_equal_bag_different_types_with_null_missing_different_order_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_string_result_null_string
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_sexp_result_null_sexp
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_int_result_null_int
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::permissive_exists_valid_cases_param_result_false
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_lob_types_follow_their_lexicographical_ordering_by_octet_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_sexp_result_null_sexp
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_lob_types_should_ordered_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_list_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_clob_is_null_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_structs_should_be_ordered_by_data_types_asc_nulls_last_as_default_for_asc
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_nan_before_inf_then_numeric_values_then_inf_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_string_result_null_string
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_inf_before_numeric_values_then_inf_then_nan_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_blob_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::strict_equal_bag_different_types_with_null_missing_different_order_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_lob_types_follow_their_lexicographical_ordering_by_octet_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_int_result_null_int
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::permissive_equal_bag_different_types_different_order_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_int_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::permissive_exists_valid_cases_param_missing_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_bool_result_null_bool
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_structs_should_be_ordered_by_data_types_desc_nulls_first_as_default_for_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_struct_result_null_struct
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::permissive_exists_valid_cases_param_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::strict_equal_list_different_types_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_clob_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_bool_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_bool_result_null_bool
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_null_result_null
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_nan_before_inf_then_numeric_values_then_inf_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_symbol_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_sexp_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_list_is_null_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_lists_items_should_be_ordered_by_data_types_asc_nulls_last_as_default_for_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_sexp_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_string_is_null_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_text_types_compared_by_lexicographical_ordering_of_unicode_scalar_desc
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_lists_items_should_be_ordered_by_data_types_desc_nulls_first_as_default_for_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_null_is_null_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_lob_types_should_ordered_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_symbol_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_blob_is_null_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_inf_before_numeric_values_then_inf_then_nan_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_bool_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_blob_result_null_blob
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_blob_result_null_blob
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::strict_exists_valid_cases_param_result_false
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_int_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_decimal_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_comparison_sql_null_null_is_null_result_true
  • partiql_tests::eval::primitives::path::path::path::permissive_path_index_bag_literal
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::strict_exists_valid_cases_param_missing_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_text_types_compared_by_lexicographical_ordering_of_unicode_scalar_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_symbol_result_null_symbol
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_null_result_null
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_list_result_null_list
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_lists_items_should_be_ordered_by_data_types_asc_nulls_last_as_default_for_asc
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_text_types_compared_by_lexicographical_ordering_of_unicode_scalar_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_list_result_null_list
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_comparison_sql_null_string_is_null_result_true
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::strict_equal_bag_different_types_different_order_true
  • partiql_tests::eval::ion::primitives::primitives::symbol::empty_symbol::permissive_empty_symbol_in_table
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_decimal_result_null_decimal
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_clob_result_null_clob
  • partiql_tests::eval::ion::primitives::primitives::functions::exists::exists::permissive_exists_valid_cases_param_1_result_true
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_structs_should_be_ordered_by_data_types_desc_nulls_first_as_default_for_desc
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::permissive_equal_list_different_types_true

@jpschorr jpschorr requested a review from alancai98 February 1, 2025 05:18
Copy link
Member

@alancai98 alancai98 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One follow-up about the already lowered value. Otherwise initial boxed Ion variant impl looks good.

@jpschorr jpschorr merged commit cc421cf into main Feb 3, 2025
18 of 19 checks passed
@jpschorr jpschorr deleted the feat-boxed-variant branch February 3, 2025 19:20
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.

2 participants