From 7ea80c8c4475a293fd3f6c0d4aabad176e4dfbf7 Mon Sep 17 00:00:00 2001 From: jonahgao Date: Fri, 28 Jun 2024 22:01:06 +0800 Subject: [PATCH 1/2] minor: consolidate gcd related tests --- datafusion/sqllogictest/test_files/math.slt | 55 ++++++++++++++----- datafusion/sqllogictest/test_files/scalar.slt | 45 --------------- 2 files changed, 42 insertions(+), 58 deletions(-) diff --git a/datafusion/sqllogictest/test_files/math.slt b/datafusion/sqllogictest/test_files/math.slt index ec1b0cfd93f8..a9dfcdba4e37 100644 --- a/datafusion/sqllogictest/test_files/math.slt +++ b/datafusion/sqllogictest/test_files/math.slt @@ -580,11 +580,46 @@ CREATE TABLE signed_integers( (4, NULL, NULL, -512, NULL, NULL) ; -query II -select gcd(20, 1000), lcm(20, 1000); + +## gcd + +# gcd scalar function +query IIIIII rowsort +select gcd(0, 0), gcd(2, 0), gcd(0, 2), gcd(2, 3), gcd(15, 10), gcd(20, 1000) +---- +0 2 2 1 5 20 + +# gcd with negative values +query IIIII +select gcd(-100, 0), gcd(0, -100), gcd(-2, 3), gcd(15, -10), gcd(-20, -1000) +---- +100 100 1 5 20 + +# gcd scalar nulls +query III +select gcd(null, 64), gcd(2, null), gcd(null, null); +---- +NULL NULL NULL + +# scalar maxes and/or negative 1 +query III +select + gcd(9223372036854775807, -9223372036854775808), -- i64::MIN, i64::MAX + gcd(9223372036854775807, -1), -- i64::MAX, -1 + gcd(-9223372036854775808, -1); -- i64::MIN, -1 +---- +1 1 1 + +# gcd with columns and expresions +query II rowsort +select gcd(a, b), gcd(c*d + 1, abs(e)) + f from signed_integers; ---- -20 1000 +1 11 +1 13 +2 -10 +NULL NULL +# gcd(i64::MIN, i64::MIN) query error DataFusion error: Arrow error: Compute error: Signed integer overflow in GCD\(\-9223372036854775808, \-9223372036854775808\) select gcd(-9223372036854775808, -9223372036854775808); @@ -596,20 +631,14 @@ select gcd(-9223372036854775808, 0); query error DataFusion error: Arrow error: Compute error: Signed integer overflow in GCD\(0, \-9223372036854775808\) select gcd(0, -9223372036854775808); -# Test gcd with zero and negative values -query III -select gcd(0, 0), gcd(-100, 0), gcd(0, -100); ----- -0 100 100 - ## lcm # Basic cases -query IIIII -select lcm(0, 0), lcm(0, 2), lcm(3, 0), lcm(2, 3), lcm(15, 10); +query IIIIII +select lcm(0, 0), lcm(0, 2), lcm(3, 0), lcm(2, 3), lcm(15, 10), lcm(20, 1000) ---- -0 0 0 6 30 +0 0 0 6 30 1000 # Test lcm with negative numbers query IIIII @@ -652,4 +681,4 @@ query error DataFusion error: Arrow error: Compute error: Overflow happened on F select FACTORIAL(350943270); statement ok -drop table signed_integers \ No newline at end of file +drop table signed_integers diff --git a/datafusion/sqllogictest/test_files/scalar.slt b/datafusion/sqllogictest/test_files/scalar.slt index e15226981259..85ac5b0c242d 100644 --- a/datafusion/sqllogictest/test_files/scalar.slt +++ b/datafusion/sqllogictest/test_files/scalar.slt @@ -448,51 +448,6 @@ select floor(a), floor(b), floor(c) from signed_integers; 2 -1000 123 4 NULL NULL -## gcd - -# gcd scalar function -query III rowsort -select gcd(0, 0), gcd(2, 3), gcd(15, 10); ----- -0 1 5 - -# gcd scalar nulls -query I rowsort -select gcd(null, 64); ----- -NULL - -# gcd scalar nulls #1 -query I rowsort -select gcd(2, null); ----- -NULL - -# gcd scalar nulls #2 -query I rowsort -select gcd(null, null); ----- -NULL - -# scalar maxes and/or negative 1 -query III rowsort -select - gcd(9223372036854775807, -9223372036854775808), -- i64::MIN, i64::MAX - -- wait till fix, cause it fails gcd(-9223372036854775808, -9223372036854775808), -- -i64::MIN, i64::MIN - gcd(9223372036854775807, -1), -- i64::MAX, -1 - gcd(-9223372036854775808, -1); -- i64::MIN, -1 ----- -1 1 1 - -# gcd with columns -query III rowsort -select gcd(a, b), gcd(c, d), gcd(e, f) from signed_integers; ----- -1 1 2 -1 2 6 -2 1 1 -NULL NULL NULL - ## ln # ln scalar function From 6aaeeb01402ae2b514d6edb8c89ffc9956da599c Mon Sep 17 00:00:00 2001 From: jonahgao Date: Fri, 28 Jun 2024 22:07:50 +0800 Subject: [PATCH 2/2] fix comment --- datafusion/sqllogictest/test_files/math.slt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafusion/sqllogictest/test_files/math.slt b/datafusion/sqllogictest/test_files/math.slt index a9dfcdba4e37..573441ab4401 100644 --- a/datafusion/sqllogictest/test_files/math.slt +++ b/datafusion/sqllogictest/test_files/math.slt @@ -604,7 +604,7 @@ NULL NULL NULL # scalar maxes and/or negative 1 query III select - gcd(9223372036854775807, -9223372036854775808), -- i64::MIN, i64::MAX + gcd(9223372036854775807, -9223372036854775808), -- i64::MAX, i64::MIN gcd(9223372036854775807, -1), -- i64::MAX, -1 gcd(-9223372036854775808, -1); -- i64::MIN, -1 ----