Changeset: dd930d2d10fc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dd930d2d10fc
Added Files:
        sql/test/BugTracker-2026/Tests/7806-numeric-no-prec-no-scale.test
Modified Files:
        sql/server/rel_select.c
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

Correct precision and scale when casting to NUMERIC without precision and 
scale. Fix #7806


diffs (32 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -4194,8 +4194,9 @@ rel_cast(sql_query *query, sql_rel **rel
                sql_subtype *et = exp_subtype(e);
                if (e->type == e_atom && !tpe->digits) {
                        if (e->l && (et->type->eclass == EC_NUM || 
et->type->eclass == EC_DEC)) {
-                               tpe->digits = atom_num_digits(e->l);
-                               tpe = sql_bind_subtype(sql->sa, "decimal", 
tpe->digits, et->scale);
+                               tpe->digits = atom_num_digits(e->l) + 1;
+                               tpe->scale = 1;
+                               tpe = sql_bind_subtype(sql->sa, "decimal", 
tpe->digits, tpe->scale);
                        } else if (EC_VARCHAR(et->type->eclass)) {
                                char *s = E_ATOM_STRING(e);
                                unsigned int min_precision = 0, min_scale = 0;
diff --git a/sql/test/BugTracker-2026/Tests/7806-numeric-no-prec-no-scale.test 
b/sql/test/BugTracker-2026/Tests/7806-numeric-no-prec-no-scale.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/7806-numeric-no-prec-no-scale.test
@@ -0,0 +1,4 @@
+query D
+select 15 / cast(10 as numeric) as anon_1
+----
+1.500
diff --git a/sql/test/BugTracker-2026/Tests/All 
b/sql/test/BugTracker-2026/Tests/All
--- a/sql/test/BugTracker-2026/Tests/All
+++ b/sql/test/BugTracker-2026/Tests/All
@@ -3,3 +3,4 @@
 7783-deleted-row
 7804-querylog-catalog-orderby-bug
 7805-orderby-all-bug
+7806-numeric-no-prec-no-scale
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to