Changeset: 084d9506de63 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/084d9506de63
Modified Files:
        sql/server/rel_optimize_proj.c
Branch: Jun2023
Log Message:

fixed issue, creating multiple aggregate columns with same alias.


diffs (30 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
@@ -2694,15 +2694,19 @@ rel_groupby_distinct(visitor *v, sql_rel
                }
 
                darg = arg->h->data;
-               if ((found = exps_find_exp(gbe, darg))) { /* first find if the 
aggregate argument already exists in the grouping list */
-                       darg = exp_ref(v->sql, found);
+               if ((found = exps_find_exp(exps, darg)) == NULL) { /* not 
already in the groups projection list */
+                       if ((found = exps_find_exp(gbe, darg))) { /* first find 
if the aggregate argument already exists in the grouping list */
+                               darg = exp_ref(v->sql, found);
+                       } else {
+                               list_append(gbe, darg = exp_copy(v->sql, darg));
+                               exp_label(v->sql->sa, darg, ++v->sql->label);
+                               darg = exp_ref(v->sql, darg);
+                       }
+                       list_append(exps, darg);
+                       darg = exp_ref(v->sql, darg);
                } else {
-                       list_append(gbe, darg = exp_copy(v->sql, darg));
-                       exp_label(v->sql->sa, darg, ++v->sql->label);
-                       darg = exp_ref(v->sql, darg);
+                       darg = exp_ref(v->sql, found);
                }
-               list_append(exps, darg);
-               darg = exp_ref(v->sql, darg);
                arg->h->data = darg;
                l = rel->l = rel_groupby(v->sql, rel->l, gbe);
                l->exps = exps;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to