Changeset: 3c3fd42d875d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3c3fd42d875d Modified Files: sql/server/rel_exp.c sql/server/rel_optimizer.c Branch: graph0 Log Message:
QRW: name_find_column diffs (44 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -1818,9 +1818,9 @@ exp_copy( sql_allocator *sa, sql_exp * e break; case e_graph: ne = exp_create(sa, e_graph); + memcpy(ne, e, sizeof(sql_exp)); ne->l = exps_copy(sa, e->l); ne->r = exps_copy(sa, e->r); - ne->card = CARD_ATOM; break; } if (!ne) diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -158,7 +158,16 @@ name_find_column( sql_rel *rel, char *rn break; case op_graph_join: case op_graph_select: - assert(0 && "Not implemented yet"); // TODO: not handled + // here we are looking for the physical columns, ignore the shortest paths + // first attempt, left relation + if(!c) { c = name_find_column(rel->l, rname, name, pnr, bt); } + + // second attempt, right relation in case of join + if(!c && rel->r ) { + assert(rel->op == op_graph_join); + c = name_find_column(rel->r, rname, name, pnr, bt); + } + break; } if (alias) { /* we found an expression with the correct name, but we need sql_columns */ @@ -4860,7 +4869,7 @@ rel_reduce_groupby_exps(int *changes, mv } } } - if (cnr && nr && list_length(tbls[j]->pkey->k.columns) == nr) { + if (cnr && nr && list_length(tbls[j]->pkey->k.columns) == nr /*=all*/) { list *ngbe = new_exp_list(sql->sa); list *exps = rel->exps, *nexps = new_exp_list(sql->sa); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list