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]
