Changeset: 9659e25437cf for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9659e25437cf
Modified Files:
        sql/backends/monet5/rel_bin.c
Branch: graph0
Log Message:

CODEGEN: added the entry point for rel2bin


diffs (83 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -4699,6 +4699,27 @@ rel2bin_ddl(backend *be, sql_rel *rel, l
 }
 
 static stmt *
+rel2bin_graph(backend *be, sql_rel* rel, list *refs)
+{
+       sql_graph* graph_ptr = (sql_graph*) rel;
+       stmt *left = NULL, *right = NULL, *edges = NULL; // depending relations
+
+       // first construct the depending relations
+       left = subrel_bin(be, rel->l, refs);
+       if(!left) return NULL; // error
+       if(rel->op == op_graph_join) {
+               right = subrel_bin(be, rel->r, refs);
+               if(!right) return NULL; // error
+       }
+       edges = subrel_bin(be, graph_ptr->edges, refs);
+       if(!edges) return NULL; // error
+
+
+
+       return NULL;
+}
+
+static stmt *
 subrel_bin(backend *be, sql_rel *rel, list *refs) 
 {
        mvc *sql = be->mvc;
@@ -4790,7 +4811,8 @@ subrel_bin(backend *be, sql_rel *rel, li
                break;
        case op_graph_join:
        case op_graph_select:
-               assert(0 && "Not implemented yet"); // TODO: not handled
+               s = rel2bin_graph(be, rel, refs);
+               break;
        }
        if (s && rel_is_ref(rel)) {
                list_append(refs, rel);
@@ -4923,7 +4945,8 @@ exp_deps(sql_allocator *sa, sql_exp *e, 
                        }
                }       break;
        case e_graph:
-               assert(0 && "Not implemented yet");
+               return exps_deps(sa, e->l, refs, l) || exps_deps(sa, e->r, 
refs, l);
+               break;
        }
        return 0;
 }
@@ -5034,8 +5057,21 @@ rel_deps(sql_allocator *sa, sql_rel *r, 
                }
                break;
        case op_graph_join:
-       case op_graph_select:
-               assert(0 && "Not implemented yet"); // TODO: not handled
+       case op_graph_select: {
+               sql_graph* graph_ptr = (sql_graph*) r;
+               int rc = 0;
+
+               // recurse on the sub tables
+               rc = rel_deps(sa, r->l, refs, l);
+               if(!rc) rc = rel_deps(sa, r->r, refs, l);
+               if(!rc) rc = rel_deps(sa, graph_ptr->edges, refs, l);
+               if(rc) return rc; // error
+
+               // visit the depending expressions
+               exps_deps(sa, graph_ptr->efrom, refs, l);
+               exps_deps(sa, graph_ptr->eto, refs, l);
+               // no need to visit graph_ptr->spfw
+       } break;
        }
        if (r->exps)
                exps_deps(sa, r->exps, refs, l);
@@ -5043,7 +5079,6 @@ rel_deps(sql_allocator *sa, sql_rel *r, 
                exps_deps(sa, r->r, refs, l);
        if (rel_is_ref(r)) {
                list_append(refs, r);
-               list_append(refs, l);
        }
        return 0;
 }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to