Changeset: edb40967f7d2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/edb40967f7d2
Added Files:
        
sql/test/BugTracker-2025/Tests/7754-overflow-in-conversion-to-decimal.test
Modified Files:
        sql/test/BugTracker-2025/Tests/All
Branch: Dec2025
Log Message:

Add missing reproduction test for #7754. It only runs when HAVE_HGE is false.


diffs (113 lines):

diff --git 
a/sql/test/BugTracker-2025/Tests/7754-overflow-in-conversion-to-decimal.test 
b/sql/test/BugTracker-2025/Tests/7754-overflow-in-conversion-to-decimal.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7754-overflow-in-conversion-to-decimal.test
@@ -0,0 +1,94 @@
+-- the literal 86399999.00000000000 has 19 significant digits and is converted 
to a double when hge is not supported
+query T nosort
+explain select 86399999.00000000000 / 86400000.0
+----
+project (
+|  [ boolean(1) "true" as "%1"."%1" ]
+) [ "sys"."sql_div"(double(51) "86399999", double(53) "86400000") ]
+
+-- 0.999999988425926
+query T nosort
+select cast(86399999.00000000000 / 86400000.0 as string)
+----
+0.999999988425926
+
+
+-- the literal 86399999.0000000000 has 18 significant digits and is converted 
to a decimal(18,10) when hge is not supported
+query T nosort
+explain select 86399999.0000000000 / 86400000.0
+----
+project (
+|  [ boolean(1) "true" as "%1"."%1" ]
+) [ "sys"."sql_div"(decimal(18,11)[decimal(18,10) "863999990000000000"], 
decimal(9,1) "864000000") ]
+
+
+statement error 22003!overflow in conversion to DECIMAL(18,11).
+select cast(86399999.0000000000 / 86400000.0 as string)
+
+
+-- the literal 86399999.000000000 has 17 significant digits and is converted 
to a decimal(17,9) when hge is not supported
+query T nosort
+explain select 86399999.000000000 / 86400000.0
+----
+project (
+|  [ boolean(1) "true" as "%1"."%1" ]
+) [ "sys"."sql_div"(decimal(18,10)[decimal(17,9) "86399999000000000"], 
decimal(9,1) "864000000") ]
+
+
+query T nosort
+select cast(86399999.000000000 / 86400000.0 as string)
+----
+0.999999988
+
+
+-- workaround using int as divider
+-- 0.999999988425926
+query T nosort
+select cast(86399999.0000000000 / 86400000 as string)
+----
+0.9999999884
+
+query T nosort
+explain select 86399999.0000000000 / 86400000
+----
+project (
+|  [ boolean(1) "true" as "%1"."%1" ]
+) [ "sys"."sql_div"(decimal(18,10) "863999990000000000", int(27) "86400000") ]
+
+-- workarounds using explicit castings
+query T nosort
+select cast(86399999.0000000000 / cast(86400000.0 as decimal(8,0)) as string)
+----
+0.9999999884
+
+query T nosort
+explain select 86399999.0000000000 / cast(86400000.0 as decimal(8,0))
+----
+project (
+|  [ boolean(1) "true" as "%1"."%1" ]
+) [ "sys"."sql_div"(decimal(18,10) "863999990000000000", decimal(8) 
"86400000") ]
+
+query T nosort
+select cast(cast(86399999.0000000000 as decimal(18,10)) / cast(86400000.0 as 
decimal(8,0)) as string)
+----
+0.9999999884
+
+query T nosort
+explain select cast(86399999.0000000000 as decimal(18,10)) / cast(86400000.0 
as decimal(8,0))
+----
+project (
+|  [ boolean(1) "true" as "%1"."%1" ]
+) [ "sys"."sql_div"(decimal(18,10) "863999990000000000", decimal(8) 
"86400000") ]
+
+query T nosort
+select cast(cast(86399999.0000000000 as decimal(17,9)) / 86400000.0 as string)
+----
+0.999999988
+
+query T nosort
+explain select cast(86399999.0000000000 as decimal(17,9)) / 86400000.0
+----
+project (
+|  [ boolean(1) "true" as "%1"."%1" ]
+) [ "sys"."sql_div"(decimal(18,10)[decimal(17,9)[decimal(18,10) 
"863999990000000000"]], decimal(9,1) "864000000") ]
+
diff --git a/sql/test/BugTracker-2025/Tests/All 
b/sql/test/BugTracker-2025/Tests/All
--- a/sql/test/BugTracker-2025/Tests/All
+++ b/sql/test/BugTracker-2025/Tests/All
@@ -85,8 +85,9 @@ HAVE_HGE?7637_str_to_decimal
 7746-incorrect-boolean-expr
 7748-update-returning-subquery-crash
 KNOWNFAIL?7750-dependency-not-removed-bug
+7752-union-sum
 7753-like-in-projection
-7752-union-sum
+!HAVE_HGE?7754-overflow-in-conversion-to-decimal
 7756-anti-join-null
 7759-replace-wrong-error
 7763-exits-with-null
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to