Changeset: 2af696d127bd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2af696d127bd
Modified Files:
        sql/server/rel_optimize_proj.c
        
sql/test/BugTracker-2026/Tests/8000-select-count-distinct-assert-failure.test
        sql/test/BugTracker-2026/Tests/All
Branch: default
Log Message:

fixed crash in isue #8000, ie when removing some expressions from group by 
list, rewrite expressions using the removed group by exps.
fixed test for issue as well


diffs (65 lines):

diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c
--- a/sql/server/rel_optimize_proj.c
+++ b/sql/server/rel_optimize_proj.c
@@ -2341,9 +2341,8 @@ rel_reduce_groupby_exps(visitor *v, sql_
                                i += (j == i);
                        }
                }
-               if (i) { /* forall tables find pkey and
-                               remove useless other columns */
-                       /* TODO also remove group by columns which are related 
to
+               if (i) { /* forall tables find pkey and remove useless other 
columns */
+                       /* This also removes group by columns which are related 
to
                         * the other columns using a foreign-key join (n->1), 
ie 1
                         * on the to be removed side.
                         */
@@ -2426,8 +2425,7 @@ rel_reduce_groupby_exps(visitor *v, sql_
                                                        append(ngbe, e);
                                        }
                                        rel->r = ngbe;
-                                       /* rewrite gbe and aggr, in the aggr 
list */
-                                       if (0)
+                                       /* rewrite gbe and aggr, in the aggr 
list, as they may refer to the removed expressions */
                                        for (m = rel->exps->h; m; m = m->next ){
                                                sql_exp *e = m->data;
                                                int fnd = 0;
@@ -2435,13 +2433,11 @@ rel_reduce_groupby_exps(visitor *v, sql_
                                                for (l = 0, n = gbe->h; l < k 
&& n && !fnd; l++, n = n->next) {
                                                        sql_exp *gb = n->data;
 
-                                                       if (scores[l] == -1 && 
exp_refers(gb, e)) {
-                                                               /*
+                                                       if (scores[l] == -1 && 
exp_refers(gb, e) && gb->alias.label != gb->nid) {
                                                                sql_exp *rs = 
exp_column(v->sql->sa, gb->l?gb->l:exp_relname(gb), gb->r?gb->r:exp_name(gb), 
exp_subtype(gb), rel->card, has_nil(gb), is_unique(gb), is_intern(gb));
                                                                
exp_setalias(rs, e->alias.label, exp_find_rel_name(e), exp_name(e));
+                                                               rs->nid = 
gb->nid;
                                                                e = rs;
-                                                               */
-                                                               
assert(e->alias.label == e->nid);
                                                                fnd = 1;
                                                        }
                                                }
diff --git 
a/sql/test/BugTracker-2026/Tests/8000-select-count-distinct-assert-failure.test 
b/sql/test/BugTracker-2026/Tests/8000-select-count-distinct-assert-failure.test
--- 
a/sql/test/BugTracker-2026/Tests/8000-select-count-distinct-assert-failure.test
+++ 
b/sql/test/BugTracker-2026/Tests/8000-select-count-distinct-assert-failure.test
@@ -57,7 +57,7 @@ FROM (
 3
 
 -- CTAS form.
-statement ok rowcount 3
+statement ok
 CREATE TABLE tt AS
 SELECT c1, COUNT(DISTINCT c10) AS agg_cnt
 FROM t3
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
@@ -182,7 +182,7 @@ KNOWNFAIL?7996-delete-not-exists-correla
 KNOWNFAIL?7997-recursive-cte-number-overflow-issue
 KNOWNFAIL?7998-scalar-subquery-error-msg-improvement
 7999-not-not-expr-bug
-KNOWNFAIL?8000-select-count-distinct-assert-failure
+8000-select-count-distinct-assert-failure
 8001-select-count-where-having-bug
 KNOWNFAIL?8002-schema-renaming-makes-seq-invalid-bug
 KNOWNFAIL?8003-windowed-group_concat-ignores-orderby-bug
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to