Changeset: 78961a3f4473 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/78961a3f4473
Modified Files:
sql/server/rel_unnest.c
sql/test/BugTracker-2024/Tests/mvc_row_result_wrap-Bug-7481.test
Branch: default
Log Message:
fixed #7481, correct cardinality of wndow functions on constants
diffs (40 lines):
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -2239,7 +2239,7 @@ exp_reset_card_and_freevar_set_physical_
switch(e->type) {
case e_aggr:
case e_func: {
- e->card = list_empty(e->l)?CARD_MULTI:exps_card(e->l);
+ e->card =
list_empty(e->l)?rel?rel->card:CARD_MULTI:exps_card(e->l);
} break;
case e_column: {
sql_exp *le = NULL, *re = NULL;
@@ -2632,7 +2632,6 @@ rewrite_rank(visitor *v, sql_rel *rel, s
(void)depth;
/* ranks/window functions only exist in the projection */
list *l = e->l, *r = e->r, *gbe = r->h->data, *obe = r->h->next->data;
- e->card = (rel->card == CARD_AGGR) ? CARD_AGGR : CARD_MULTI; /* After
the unnesting, the cardinality of the window function becomes larger */
int needed = (gbe || obe);
if (l)
@@ -2842,8 +2841,6 @@ rel_union_exps(mvc *sql, sql_exp **l, li
exp_label(sql->sa, ve, ++sql->label); /* an alias is needed */
if (exp_has_rel(ve)) {
sq = exp_rel_get_rel(sql->sa, ve); /* get subquery */
- if (sq)
- freevar = rel_has_freevar(sql,sq);
} else {
sq = rel_project(sql->sa, NULL,
append(sa_list(sql->sa), ve));
if (!exp_is_atom(ve))
diff --git a/sql/test/BugTracker-2024/Tests/mvc_row_result_wrap-Bug-7481.test
b/sql/test/BugTracker-2024/Tests/mvc_row_result_wrap-Bug-7481.test
--- a/sql/test/BugTracker-2024/Tests/mvc_row_result_wrap-Bug-7481.test
+++ b/sql/test/BugTracker-2024/Tests/mvc_row_result_wrap-Bug-7481.test
@@ -8,7 +8,6 @@ SELECT CASE WHEN COUNT ( ) OVER ( ) THEN
----
63
-skipif knownfail
query II nosort
SELECT 50 , CASE WHEN COUNT ( ) OVER ( ) THEN ( 63 ) END
----
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]