Remove NULL
and MISSING
from partiql-types
#463
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
As we are making progress towards fleshing out partiql type semantics with more details, the current informal consensus is that
NULL
andMISSING
can only have meaning as values or constraints (E.g.,NOT NULL
); considering this, this PR removesPartiQLType::NULL
andPartiQLType::MISSING
.Important to note is, this PR, types literals
NULL
andMISSING
values asUndefined
(orUnknown
). The rationale for making this experimental decision is that bothNULL
andMISSING
absent values represent no types;NULL
is a property of present types rather than a type itself. E.g., in SQLNULL
can be assigned to any type of column. In addition, its presence in operations can lead toNULL
. 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
andMISSING
) is an inhabited Bottom Types.This PR also includes the following:
partiql_ast_passes::partiql_typer
multiple_bound_locations
errorspartiql-eval
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.