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]