Skip to content

Commit

Permalink
Remove NULL and MISSING partiql-types (#463)
Browse files Browse the repository at this point in the history
As we are making progress towards fleshing out partiql type semantics with more details, the current informal consensus is that NULL and MISSING can only have meaning as values or constraints (E.g., NOT NULL); considering this, this PR removes PartiQLType::NULL and PartiQLType::MISSING.

Important to note is, this PR, types literals NULL and MISSING values as Undefined (or Unknown). The rationale for making this experimental decision is that both NULL and MISSING absent values represent no types; NULL is a property of present types rather than a type itself. E.g., in SQL NULL can be assigned to any type of column. In addition, its presence in operations can lead to NULL. This follows SQL's Three-Valued Logic i.e., "If a null value affects the result of a logical expression, the result is neither true nor false but unknown.".

One could argue that the Unknown type for PartiQL absent values (NULL and MISSING) is an inhabited Bottom Types.

This PR also includes the following:

- removes unused partiql_ast_passes::partiql_typer
- fixes Clippy multiple_bound_locations errors partiql-eval
  • Loading branch information
am357 authored Jun 14, 2024
1 parent 5dc7c6e commit 2e9e4cd
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 321 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]
### Changed
- *BREAKING:* Removed `NULL` and `MISSING` types from `partiql_types::PartiQLType`
- *BREAKING:* Removed `partiql_ast_passes::partiql_type`

### Added

Expand Down
1 change: 0 additions & 1 deletion partiql-ast-passes/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,3 @@
pub mod error;
pub mod name_resolver;
pub mod partiql_typer;
267 changes: 0 additions & 267 deletions partiql-ast-passes/src/partiql_typer.rs

This file was deleted.

Loading

1 comment on commit 2e9e4cd

@github-actions
Copy link

Choose a reason for hiding this comment

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

PartiQL (rust) Benchmark

Benchmark suite Current: 2e9e4cd Previous: 5dc7c6e Ratio
arith_agg-avg 774533 ns/iter (± 16563) 753638 ns/iter (± 15469) 1.03
arith_agg-avg_distinct 861350 ns/iter (± 3171) 835831 ns/iter (± 2318) 1.03
arith_agg-count 820254 ns/iter (± 13998) 803420 ns/iter (± 22198) 1.02
arith_agg-count_distinct 853809 ns/iter (± 3987) 832739 ns/iter (± 5956) 1.03
arith_agg-min 825050 ns/iter (± 4414) 809653 ns/iter (± 16906) 1.02
arith_agg-min_distinct 860652 ns/iter (± 2366) 837758 ns/iter (± 1947) 1.03
arith_agg-max 831514 ns/iter (± 3169) 818457 ns/iter (± 5953) 1.02
arith_agg-max_distinct 867419 ns/iter (± 3058) 845091 ns/iter (± 2568) 1.03
arith_agg-sum 825232 ns/iter (± 5604) 811960 ns/iter (± 2638) 1.02
arith_agg-sum_distinct 858983 ns/iter (± 2008) 837219 ns/iter (± 3773) 1.03
arith_agg-avg-count-min-max-sum 970126 ns/iter (± 3363) 960050 ns/iter (± 7594) 1.01
arith_agg-avg-count-min-max-sum-group_by 1220538 ns/iter (± 11818) 1217763 ns/iter (± 10595) 1.00
arith_agg-avg-count-min-max-sum-group_by-group_as 1813863 ns/iter (± 8587) 1771238 ns/iter (± 22203) 1.02
arith_agg-avg_distinct-count_distinct-min_distinct-max_distinct-sum_distinct 1252766 ns/iter (± 7657) 1180768 ns/iter (± 7377) 1.06
arith_agg-avg_distinct-count_distinct-min_distinct-max_distinct-sum_distinct-group_by 1536893 ns/iter (± 33050) 1487101 ns/iter (± 5926) 1.03
arith_agg-avg_distinct-count_distinct-min_distinct-max_distinct-sum_distinct-group_by-group_as 2129085 ns/iter (± 4630) 2044281 ns/iter (± 6449) 1.04
parse-1 4294 ns/iter (± 114) 4155 ns/iter (± 8) 1.03
parse-15 39405 ns/iter (± 210) 39774 ns/iter (± 779) 0.99
parse-30 77075 ns/iter (± 258) 76761 ns/iter (± 617) 1.00
compile-1 4320 ns/iter (± 19) 4306 ns/iter (± 10) 1.00
compile-15 33899 ns/iter (± 143) 32514 ns/iter (± 74) 1.04
compile-30 68765 ns/iter (± 227) 67427 ns/iter (± 1612) 1.02
plan-1 69407 ns/iter (± 261) 68652 ns/iter (± 371) 1.01
plan-15 1086664 ns/iter (± 89435) 1077672 ns/iter (± 15834) 1.01
plan-30 2167995 ns/iter (± 15109) 2154052 ns/iter (± 4649) 1.01
eval-1 13411922 ns/iter (± 115353) 12510063 ns/iter (± 58387) 1.07
eval-15 85882750 ns/iter (± 298670) 85840785 ns/iter (± 759790) 1.00
eval-30 166363476 ns/iter (± 587071) 164790916 ns/iter (± 434765) 1.01
join 9746 ns/iter (± 104) 9750 ns/iter (± 98) 1.00
simple 2457 ns/iter (± 7) 2449 ns/iter (± 22) 1.00
simple-no 426 ns/iter (± 1) 439 ns/iter (± 1) 0.97
numbers 57 ns/iter (± 0) 48 ns/iter (± 0) 1.19
parse-simple 565 ns/iter (± 8) 592 ns/iter (± 2) 0.95
parse-ion 1777 ns/iter (± 3) 1772 ns/iter (± 7) 1.00
parse-group 5797 ns/iter (± 13) 5691 ns/iter (± 55) 1.02
parse-complex 14900 ns/iter (± 72) 14582 ns/iter (± 71) 1.02
parse-complex-fexpr 21947 ns/iter (± 95) 21160 ns/iter (± 41) 1.04

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.