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

Update ion tests and add null & nan comparisions #543

Merged
merged 3 commits into from
Feb 4, 2025
Merged

Conversation

jpschorr
Copy link
Contributor

This PR builds on #540 & #542 and adds the ability for comparisons to treat NULLs as equal and/or NaNs as equal.
NaN-equality is mostly of interest for testing against expected examplars.
NULL-equality is used likewise, but also important for compliance with PartiQL's specified semantics for eqg.

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

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.

@jpschorr jpschorr requested a review from alancai98 January 31, 2025 21:15
Copy link

codecov bot commented Jan 31, 2025

Codecov Report

Attention: Patch coverage is 37.85714% with 87 lines in your changes missing coverage. Please review.

Project coverage is 80.12%. Comparing base (f684ea9) to head (7b7ac33).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
extension/partiql-extension-ion/src/boxed_ion.rs 35.83% 77 Missing ⚠️
partiql-value/src/boxed_variant.rs 0.00% 6 Missing ⚠️
partiql-value/src/variant.rs 66.66% 4 Missing ⚠️

❌ Your patch status has failed because the patch coverage (37.85%) 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     #543      +/-   ##
==========================================
+ Coverage   80.08%   80.12%   +0.03%     
==========================================
  Files          95       95              
  Lines       20465    20581     +116     
  Branches    20465    20581     +116     
==========================================
+ Hits        16390    16490     +100     
- Misses       3640     3648       +8     
- Partials      435      443       +8     

☔ 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 (f684ea9) 9025898 +/-
% Passing 86.31% 87.14% 0.82%
✅ Passing 5549 5602 53
❌ Failing 880 827 -53
🔶 Ignored 0 0 0
Total Tests 6429 6429 0

Number passing in both: 5549

Number failing in both: 827

Number passing in Base (f684ea9) but now fail: 0

Number failing in Base (f684ea9) but now pass: 53

The following test(s) were previously failing but now pass. Before merging, confirm they are intended to pass:

Click here to see
  • 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::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::primitives::primitives::null::null::permissive_null_pass_through_sql_null_int_result_null_int
  • 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_clob_result_null_clob
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::permissive_lob_types_follow_their_lexicographical_ordering_by_octet_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_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::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_blob_result_null_blob
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_bool_result_null_bool
  • 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::query::query::select::projection::project_various_container_types::strict_project_of_sexp
  • 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::strict_lob_types_should_ordered_desc
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_decimal_result_null_decimal
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::strict_equal_list_different_types_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::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::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::strict_null_pass_through_sql_null_int_result_null_int
  • partiql_tests::eval::ion::query::query::order_by::edge_cases::strict_lob_types_follow_their_lexicographical_ordering_by_octet_asc
  • 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::query::query::order_by::edge_cases::permissive_nan_before_inf_then_numeric_values_then_inf_asc
  • partiql_tests::eval::ion::primitives::primitives::null::null::permissive_null_pass_through_sql_null_struct_result_null_struct
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_null_result_null
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::strict_equal_bag_different_types_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::operators::nary_operators::nary::permissive_equal_bag_different_types_different_order_true
  • 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::permissive_inf_before_numeric_values_then_inf_then_nan_desc
  • 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::strict_null_pass_through_sql_null_struct_result_null_struct
  • partiql_tests::eval::ion::primitives::primitives::null::null::strict_null_pass_through_sql_null_list_result_null_list
  • partiql_tests::eval::ion::query::query::select::projection::project_various_container_types::permissive_project_of_sexp
  • 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::strict_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_clob_result_null_clob
  • 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_pass_through_sql_null_sexp_result_null_sexp
  • 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::permissive_null_pass_through_sql_null_sexp_result_null_sexp
  • 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::permissive_null_pass_through_sql_null_blob_result_null_blob
  • partiql_tests::eval::ion::query::query::select::from_clause::various_types_in_from_clause::strict_range_over_sexp
  • 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_lob_types_should_ordered_desc
  • partiql_tests::eval::ion::query::query::select::from_clause::various_types_in_from_clause::permissive_range_over_sexp
  • partiql_tests::eval::ion::primitives::primitives::operators::nary_operators::nary::permissive_equal_list_different_types_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::query::query::order_by::edge_cases::strict_lists_items_should_be_ordered_by_data_types_asc_nulls_last_as_default_for_asc

This was referenced Jan 31, 2025
@jpschorr
Copy link
Contributor Author

jpschorr commented Feb 3, 2025

There are some lingering warnings of the form ...is more private than the item...

They are fixed in #544 : for example: https://github.com/partiql/partiql-lang-rust/pull/544/files#diff-b95d0de35899342f30d2531c8cd3728a958d846d163f0c154c204f7aeb8979ceL112

@jpschorr jpschorr force-pushed the feat-boxed-variant-comparisons branch from 95a28d7 to 68f01d4 Compare February 3, 2025 19:51
Base automatically changed from feat-boxed-variant-comparisons to main February 3, 2025 21:47
@jpschorr jpschorr requested a review from alancai98 February 3, 2025 22:42
@jpschorr jpschorr merged commit b970752 into main Feb 4, 2025
18 of 19 checks passed
@jpschorr jpschorr deleted the feat-ion-null_nan branch February 4, 2025 02:02
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