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

Reply via email to