Changeset: 7dc9420a2cea for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7dc9420a2cea
Modified Files:
        sql/server/rel_select.c
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

Fix for #7971. Added checks on valid 'et' pointer.


diffs (39 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
@@ -4227,7 +4227,7 @@ rel_cast(sql_query *query, sql_rel **rel
        if (tpe->type->eclass == EC_DEC) {
                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)) {
+                       if (e->l && et && (et->type->eclass == EC_NUM || 
et->type->eclass == EC_DEC)) {
                                if (et->digits && et->scale) {
                                        tpe->digits = et->digits;
                                        tpe->scale = et->scale;
@@ -4236,7 +4236,7 @@ rel_cast(sql_query *query, sql_rel **rel
                                        tpe->scale = 1;
                                }
                                tpe = sql_bind_subtype(sql->sa, "decimal", 
tpe->digits, tpe->scale);
-                       } else if (EC_VARCHAR(et->type->eclass)) {
+                       } else if (et && EC_VARCHAR(et->type->eclass)) {
                                char *s = E_ATOM_STRING(e);
                                unsigned int min_precision = 0, min_scale = 0;
                                bool dot_seen = false;
@@ -4254,7 +4254,7 @@ rel_cast(sql_query *query, sql_rel **rel
                                tpe = sql_bind_subtype(sql->sa, "decimal", 18, 
3);
                        }
                } else if (!tpe->digits && !tpe->scale) {
-                       if (et->type->eclass == EC_NUM)
+                       if (et && et->type->eclass == EC_NUM)
                                tpe = sql_bind_subtype(sql->sa, "decimal", 
et->digits, 0);
                        else /* fallback */
                                tpe = sql_bind_subtype(sql->sa, "decimal", 18, 
3);
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
@@ -154,4 +154,4 @@ KNOWNFAIL?7965-select-1-limit-0-bug
 7968-optimize-distinct-from-q1-except-q2
 7969-optimize-distinct-from-q1-intersect-q2
 7970-optimize-where-predicate
-KNOWNFAIL?7971-prepare-decimal-parameter-crash
+7971-prepare-decimal-parameter-crash
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to