Changeset: 4ef224cf39dc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4ef224cf39dc
Added Files:
        sql/test/BugTracker-2025/Tests/7720-coalesce.test
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/test/BugTracker-2025/Tests/All
Branch: default
Log Message:

handle single value coalesce better, solving issue #7720


diffs (41 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -1152,13 +1152,17 @@ exp2bin_coalesce(backend *be, sql_exp *f
        sql_subfunc *and = sql_bind_func(be->mvc, "sys", "and", bt, bt, F_FUNC, 
true, true);
        sql_subfunc *not = sql_bind_func(be->mvc, "sys", "not", bt, NULL, 
F_FUNC, true, true);
 
+       list *exps = fe->l;
+       if (list_length(exps) == 1) {
+               sql_exp *e = exps->h->data;
+               return exp_bin(be, e, left, right, NULL, NULL, NULL, isel, 
depth+1, 0, 1);
+       }
        if (single_value) {
                /* var_x = nil; */
                nme = number2name(name, sizeof(name), ++be->mvc->label);
                (void)stmt_var(be, NULL, nme, exp_subtype(fe), 1, 2);
        }
 
-       list *exps = fe->l;
        for (node *en = exps->h; en; en = en->next) {
                sql_exp *e = en->data;
 
diff --git a/sql/test/BugTracker-2025/Tests/7720-coalesce.test 
b/sql/test/BugTracker-2025/Tests/7720-coalesce.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7720-coalesce.test
@@ -0,0 +1,4 @@
+query I
+SELECT COALESCE ( 75 )
+----
+75
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
@@ -64,5 +64,6 @@ 7716-antijoin-not-exists-null
 7717-check-with-window
 7718-crash
 7719-crash-in-complex-query
+7720-coalesce
 7730-generate-series-month-int
 7732-table-exp-issue
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to