Changeset: 5acc6a38e932 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5acc6a38e932 Modified Files: sql/server/rel_select.c Branch: default Log Message:
merged fix for bug 2928 (from Dec2011 branch) diffs (63 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -3505,33 +3505,6 @@ rel_nop(mvc *sql, sql_rel **rel, symbol } static sql_exp * -flatten_exps( mvc *sql, list *exps ) -{ - node *n; - sql_exp *e = NULL; - - for (n=exps->h; n; n=n->next) { - sql_exp *c = n->data, *ne = NULL; - - switch(c->type) { - case e_cmp: - if (!c->f) { - char *cmp = compare_func((comp_type)c->flag); - ne = rel_binop_(sql, c->l, c->r, NULL, cmp, card_value); - if (!e) - e = ne; - else - e = rel_binop_(sql, e, ne, NULL, "sql_and", card_value); - } - break; - default: - assert(0); - } - } - return e; -} - -static sql_exp * _rel_aggr(mvc *sql, sql_rel **rel, int distinct, char *aggrstr, symbol *sym, int f) { sql_subaggr *a = NULL; @@ -3595,8 +3568,11 @@ _rel_aggr(mvc *sql, sql_rel **rel, int d if (groupby->r && exps_intern(groupby->r)) { sql_rel *i = groupby->l; - if (i->exps && f == sql_sel) { - e = flatten_exps(sql, i->exps); + if (i->exps && f == sql_sel && is_join(i->op)) { + sql_rel *j = i->r; + + e = j->exps->h->data; + e = exp_column(sql->sa, exp_relname(e), exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 0); e = exp_aggr1(sql->sa, e, a, distinct, 1, groupby->card, 0); return e; } diff --git a/sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.sql b/sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.sql --- a/sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.sql +++ b/sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.sql @@ -2,7 +2,7 @@ create table countt1( a int , b int ) ; insert into countt1 values ( 3, 1 ) , ( 4, 2 ) , ( 5, 3 ) , ( 6, 4 ) , ( 7, 5 ) ; select * from countt1; -select ( select count( * )+1 from countt1 as tt3 where tt3.b < tt2.b ) from countt1 as tt2 ; +select ( select count( * )+1 from countt1 as tt3 where tt3.b < tt2.b ) from countt1 as tt2; --the result : the last SQL should returns 1,2,3,4,5 , not null,2,3,4,5 drop table countt1; _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list