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

Compare NULL types #5158

Merged
merged 1 commit into from
Feb 2, 2023
Merged

Compare NULL types #5158

merged 1 commit into from
Feb 2, 2023

Conversation

melgenek
Copy link
Contributor

@melgenek melgenek commented Feb 2, 2023

Which issue does this PR close?

Closes #4335.

Rationale for this change

These queries should produce a value instead of an error

❯ select null and null;
❯ select null or null;

What changes are included in this PR?

Null comparison coercion and tests.

I made the null logical comparison produce booleans. This is the Postgres does it, and DataFusion seems to be compatible with Postgres.

Are these changes tested?

Sqllogictests and unit tests

Are there any user-facing changes?

null and null and null or null would produce Boolean null value instead of an error.

@github-actions github-actions bot added core Core DataFusion crate logical-expr Logical plan and expressions sqllogictest SQL Logic Tests (.slt) labels Feb 2, 2023
Copy link
Member

@jackwener jackwener left a comment

Choose a reason for hiding this comment

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

LGTM. Thanks @melgenek
cc @liukun4515

Copy link
Contributor

@alamb alamb left a comment

Choose a reason for hiding this comment

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

Love it -- thank you @melgenek

I double checked postgres

postgres=# select pg_typeof(null and null);
 pg_typeof
-----------
 boolean
(1 row)

#Boolean Boolean
onlyif DataFusion
query ??
select arrow_typeof(null and null), arrow_typeof(null or null);
Copy link
Contributor

Choose a reason for hiding this comment

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

👍

@alamb alamb merged commit 7d2d51b into apache:master Feb 2, 2023
@ursabot
Copy link

ursabot commented Feb 2, 2023

Benchmark runs are scheduled for baseline = e41c4df and contender = 7d2d51b. 7d2d51b is a master commit associated with this PR. Results will be available as each benchmark for each run completes.
Conbench compare runs links:
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on ec2-t3-xlarge-us-east-2] ec2-t3-xlarge-us-east-2
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on test-mac-arm] test-mac-arm
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on ursa-i9-9960x] ursa-i9-9960x
[Skipped ⚠️ Benchmarking of arrow-datafusion-commits is not supported on ursa-thinkcentre-m75q] ursa-thinkcentre-m75q
Buildkite builds:
Supported benchmarks:
ec2-t3-xlarge-us-east-2: Supported benchmark langs: Python, R. Runs only benchmarks with cloud = True
test-mac-arm: Supported benchmark langs: C++, Python, R
ursa-i9-9960x: Supported benchmark langs: Python, R, JavaScript
ursa-thinkcentre-m75q: Supported benchmark langs: C++, Java

@melgenek melgenek deleted the 4335-null-comparison branch February 2, 2023 19:00
@melgenek
Copy link
Contributor Author

melgenek commented Feb 2, 2023

@alamb

I double checked postgres

The sqllogictest contains the same test as you performed manually https://github.com/melgenek/arrow-datafusion/blob/f1087f5c042ea093c6fd4d700dcecd8d2da6bf4a/datafusion/core/tests/sqllogictests/test_files/pg_compat/pg_compat_type_coercion.slt#L111-L115. It is just not visible in the git diff, because I added it in another pr

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Core DataFusion crate logical-expr Logical plan and expressions sqllogictest SQL Logic Tests (.slt)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

can't compare NULL type with NULL type
4 participants