Changeset: 942216d46f3a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=942216d46f3a
Added Files:
        sql/server/rel_rel.c
        sql/server/rel_rel.h
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_gencode.h
        sql/backends/monet5/sql_scenario.c
        sql/common/sql_changeset.c
        sql/include/sql_relation.h
        sql/server/Makefile.ag
        sql/server/rel_distribute.c
        sql/server/rel_distribute.h
        sql/server/rel_dump.c
        sql/server/rel_dump.h
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_optimizer.h
        sql/server/rel_planner.c
        sql/server/rel_planner.h
        sql/server/rel_prop.c
        sql/server/rel_psm.c
        sql/server/rel_psm.h
        sql/server/rel_remote.h
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_select.h
        sql/server/rel_semantic.c
        sql/server/rel_semantic.h
        sql/server/rel_sequence.c
        sql/server/rel_trans.c
        sql/server/rel_updates.c
        sql/server/rel_updates.h
        sql/server/sql_atom.c
        sql/server/sql_atom.h
        sql/server/sql_env.c
        sql/server/sql_env.h
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/server/sql_parser.h
        sql/server/sql_semantic.h
        sql/storage/sql_catalog.c
Branch: default
Log Message:

split relational operator creation code of into its own file(s)


diffs (truncated from 3542 to 300 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
@@ -9,6 +9,7 @@
 #include "monetdb_config.h"
 
 #include "rel_bin.h"
+#include "rel_rel.h"
 #include "rel_exp.h"
 #include "rel_psm.h"
 #include "rel_prop.h"
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -26,6 +26,7 @@
 #include <rel_optimizer.h>
 #include <rel_distribute.h>
 #include <rel_select.h>
+#include <rel_rel.h>
 #include <rel_exp.h>
 #include <rel_dump.h>
 #include <rel_bin.h>
@@ -349,7 +350,7 @@ SQLshutdown_wrap(Client cntxt, MalBlkPtr
        str msg;
 
        if ((msg = CLTshutdown(cntxt, mb, stk, pci)) == MAL_SUCCEED) {
-               // administer the shutdown
+               /* administer the shutdown */
                mnstr_printf(GDKstdout, "#%s\n", *getArgReference_str(stk, pci, 
0));
        }
        return msg;
@@ -2727,7 +2728,7 @@ mvc_result_set_wrap( Client cntxt, MalBl
        scale = BATdescriptor(scaleId);
        if( msg || tbl == NULL || atr == NULL || tpe == NULL || len == NULL || 
scale == NULL)
                goto wrapup_result_set;
-       // mimick the old rsColumn approach;
+       /* mimick the old rsColumn approach; */
        itertbl = bat_iterator(tbl);
        iteratr = bat_iterator(atr);
        itertpe = bat_iterator(tpe);
@@ -2747,7 +2748,7 @@ mvc_result_set_wrap( Client cntxt, MalBl
                if( b)
                        BBPunfix(bid);
        }
-       // now sent it to the channel cntxt->fdout
+       /* now sent it to the channel cntxt->fdout */
        if (mvc_export_result(cntxt->sqlcontext, cntxt->fdout, res))
                msg = createException(SQL, "sql.resultset", "failed");
   wrapup_result_set:
@@ -2836,7 +2837,7 @@ mvc_export_table_wrap( Client cntxt, Mal
        scale = BATdescriptor(scaleId);
        if( msg || tbl == NULL || atr == NULL || tpe == NULL || len == NULL || 
scale == NULL)
                goto wrapup_result_set1;
-       // mimick the old rsColumn approach;
+       /* mimick the old rsColumn approach; */
        itertbl = bat_iterator(tbl);
        iteratr = bat_iterator(atr);
        itertpe = bat_iterator(tpe);
@@ -2856,7 +2857,7 @@ mvc_export_table_wrap( Client cntxt, Mal
                if( b)
                        BBPunfix(bid);
        }
-       // now select the file channel
+       /* now select the file channel */
        if ( strcmp(filename,"stdout") == 0 )
                s= cntxt->fdout;
        else if ( (s = open_wastream(filename)) == NULL || mnstr_errnr(s)) {
@@ -2897,7 +2898,6 @@ mvc_row_result_wrap( Client cntxt, MalBl
        oid o = 0;
        BATiter itertbl,iteratr,itertpe;
        mvc *m = NULL;
-//     res_table *t= NULL;
        ptr v;
        int mtype;
        BAT  *tbl, *atr, *tpe,*len,*scale;
@@ -2906,7 +2906,6 @@ mvc_row_result_wrap( Client cntxt, MalBl
                return msg;
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
-//     m->results = t = res_table_create(m->session->tr, m->result_id++, 
pci->argc - (pci->retc+5), 1, m->results, NULL);
        res = *res_id = mvc_result_table(m, pci->argc - (pci->retc + 5), 1, 
NULL);
 
        tbl = BATdescriptor(tblId);
@@ -2916,7 +2915,7 @@ mvc_row_result_wrap( Client cntxt, MalBl
        scale = BATdescriptor(scaleId);
        if( tbl == NULL || atr == NULL || tpe == NULL || len == NULL || scale 
== NULL)
                goto wrapup_result_set;
-       // mimick the old rsColumn approach;
+       /* mimick the old rsColumn approach; */
        itertbl = bat_iterator(tbl);
        iteratr = bat_iterator(atr);
        itertpe = bat_iterator(tpe);
@@ -2935,9 +2934,6 @@ mvc_row_result_wrap( Client cntxt, MalBl
                if (mvc_result_value(m, tblname, colname, tpename, *digits++, 
*scaledigits++, v, mtype))
                        throw(SQL, "sql.rsColumn", "failed");
        }
-//     *res_id = t->id;
-       //if (*res_id < 0)
-       //msg = createException(SQL, "sql.resultSet", "failed");
        if (mvc_export_result(cntxt->sqlcontext, cntxt->fdout, res))
                msg = createException(SQL, "sql.resultset", "failed");
   wrapup_result_set:
@@ -3016,7 +3012,7 @@ mvc_export_row_wrap( Client cntxt, MalBl
        scale = BATdescriptor(scaleId);
        if( msg || tbl == NULL || atr == NULL || tpe == NULL || len == NULL || 
scale == NULL)
                goto wrapup_result_set;
-       // mimick the old rsColumn approach;
+       /* mimick the old rsColumn approach; */
        itertbl = bat_iterator(tbl);
        iteratr = bat_iterator(atr);
        itertpe = bat_iterator(tpe);
@@ -3035,7 +3031,7 @@ mvc_export_row_wrap( Client cntxt, MalBl
                if (mvc_result_value(m, tblname, colname, tpename, *digits++, 
*scaledigits++, v, mtype))
                        throw(SQL, "sql.rsColumn", "failed");
        }
-       // now select the file channel
+       /* now select the file channel */
        if ( strcmp(filename,"stdout") == 0 )
                s= cntxt->fdout;
        else if ( (s = open_wastream(filename)) == NULL || mnstr_errnr(s)) {
@@ -4862,7 +4858,7 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
                                                                sz = 
hashinfo(bn->T->hash);
                                                                
BUNappend(indices, &sz, FALSE);
 
-                                                               bitval = 0; // 
HASHispersistent(bn);
+                                                               bitval = 0; /* 
HASHispersistent(bn); */
                                                                
BUNappend(phash, &bitval, FALSE);
 
                                                                sz = 
IMPSimprintsize(bn);
@@ -4937,10 +4933,10 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
                                                                        sz += 
bn->H->vheap ? bn->H->vheap->size : 0;
                                                                        
BUNappend(heap, &sz, FALSE);
 
-                                                                       sz = 
bn->T->hash && bn->T->hash != (Hash *) 1 ? bn->T->hash->heap->size : 0; // 
HASHsize()
-                                                                       sz += 
bn->H->hash && bn->H->hash != (Hash *) 1 ? bn->H->hash->heap->size : 0; // 
HASHsize()
+                                                                       sz = 
bn->T->hash && bn->T->hash != (Hash *) 1 ? bn->T->hash->heap->size : 0; /* 
HASHsize() */
+                                                                       sz += 
bn->H->hash && bn->H->hash != (Hash *) 1 ? bn->H->hash->heap->size : 0; /* 
HASHsize() */
                                                                        
BUNappend(indices, &sz, FALSE);
-                                                                       bitval 
= 0; // HASHispersistent(bn);
+                                                                       bitval 
= 0; /* HASHispersistent(bn); */
                                                                        
BUNappend(phash, &bitval, FALSE);
 
                                                                        sz = 
IMPSimprintsize(bn);
@@ -5045,8 +5041,6 @@ RAstatement2(Client cntxt, MalBlkPtr mb,
                m->sa = sa_create();
 
                ops = sa_list(m->sa);
-       //fprintf(stderr, "'%s' %s\n", *sig, *expr);
-       //fflush(stderr);
        snprintf(buf, BUFSIZ, "%s %s", *sig, *expr);
        while (c && *c && !isspace(*c)) {
                char *vnme = c, *tnme; 
@@ -5079,12 +5073,8 @@ RAstatement2(Client cntxt, MalBlkPtr mb,
                if (c)
                        c++;
        }
-       //fprintf(stderr, "2: %d %s\n", list_length(ops), *expr);
-       //fflush(stderr);
        refs = sa_list(m->sa);
        rel = rel_read(m, *expr, &pos, refs);
-       //fprintf(stderr, "3: %d %s\n", list_length(ops), rel2str(m, rel));
-       //fflush(stderr);
        if (!rel)
                throw(SQL, "sql.register", "Cannot register %s", buf);
        if (rel) {
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -39,6 +39,7 @@
 #include <rel_select.h>
 #include <rel_optimizer.h>
 #include <rel_prop.h>
+#include <rel_rel.h>
 #include <rel_exp.h>
 #include <rel_bin.h>
 #include <rel_dump.h>
@@ -488,6 +489,24 @@ static int
        return 0;
 }
 
+static str
+rel2str( mvc *sql, sql_rel *rel)
+{
+       buffer *b;
+       stream *s = buffer_wastream(b = buffer_create(1024), "rel_dump");
+       list *refs = sa_list(sql->sa);
+       char *res = NULL; 
+
+       rel_print_refs(sql, s, rel, 0, refs, 0);
+       rel_print_(sql, s, rel, 0, refs, 0);
+       mnstr_printf(s, "\n");
+       res = buffer_get_buf(b);
+       buffer_destroy(b);
+       mnstr_destroy(s);
+       return res;
+}
+
+
 /* stub and remote function */
 static int
 _create_relational_remote(mvc *m, char *mod, char *name, sql_rel *rel, stmt 
*call, prop *prp)
@@ -3109,3 +3128,62 @@ backend_create_subaggr(backend *be, sql_
 {
        return backend_create_func(be, f->aggr, f->res, NULL);
 }
+
+void
+_rel_print(mvc *sql, sql_rel *rel) 
+{
+       list *refs = sa_list(sql->sa);
+       rel_print_refs(sql, GDKstdout, rel, 0, refs, 1);
+       rel_print_(sql, GDKstdout, rel, 0, refs, 1);
+       mnstr_printf(GDKstdout, "\n");
+}
+
+void
+rel_print(mvc *sql, sql_rel *rel, int depth) 
+{
+       list *refs = sa_list(sql->sa);
+       size_t pos;
+       size_t nl = 0;
+       size_t len = 0, lastpos = 0;
+       stream *fd = sql->scanner.ws;
+       stream *s;
+       buffer *b = buffer_create(16364); /* hopefully enough */
+       if (!b)
+               return; /* signal somehow? */
+       s = buffer_wastream(b, "SQL Plan");
+       if (!s) {
+               buffer_destroy(b);
+               return; /* signal somehow? */
+       }
+
+       rel_print_refs(sql, s, rel, depth, refs, 1);
+       rel_print_(sql, s, rel, depth, refs, 1);
+       mnstr_printf(s, "\n");
+
+       /* count the number of lines in the output, skip the leading \n */
+       for (pos = 1; pos < b->pos; pos++) {
+               if (b->buf[pos] == '\n') {
+                       nl++;
+                       if (len < pos - lastpos)
+                               len = pos - lastpos;
+                       lastpos = pos + 1;
+               }
+       }
+       b->buf[b->pos - 1] = '\0';  /* should always end with a \n, can 
overwrite */
+
+       /* craft a semi-professional header */
+       mnstr_printf(fd, "&1 0 " SZFMT " 1 " SZFMT "\n", /* type id rows 
columns tuples */
+                       nl, nl);
+       mnstr_printf(fd, "%% .plan # table_name\n");
+       mnstr_printf(fd, "%% rel # name\n");
+       mnstr_printf(fd, "%% clob # type\n");
+       mnstr_printf(fd, "%% " SZFMT " # length\n", len - 1 /* remove = */);
+
+       /* output the data */
+       mnstr_printf(fd, "%s\n", b->buf + 1 /* omit starting \n */);
+
+       mnstr_close(s);
+       mnstr_destroy(s);
+       buffer_destroy(b);
+}
+
diff --git a/sql/backends/monet5/sql_gencode.h 
b/sql/backends/monet5/sql_gencode.h
--- a/sql/backends/monet5/sql_gencode.h
+++ b/sql/backends/monet5/sql_gencode.h
@@ -25,4 +25,7 @@ sql5_export int monet5_resolve_function(
 sql5_export int backend_create_func(backend *be, sql_func *f, list *restypes, 
list *ops);
 sql5_export int monet5_create_relational_function(mvc *m, char *mod, char 
*name, sql_rel *rel, stmt *call, int inline_func);
 
+extern void rel_print(mvc *sql, sql_rel *rel, int depth);
+extern void _rel_print(mvc *sql, sql_rel *rel);
+
 #endif /* _SQL2MAL_H */
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -1267,7 +1267,7 @@ recompilequery:
 
                        trimMalBlk(mb);
                        chkProgram(c->fdout, c->nspace, mb);
-                       addOptimizers(c, mb, "default_pipe");
+                       addOptimizers(c, mb, "default_pipe"); // TODO change to 
active pipe! 
                        msg = optimizeMALBlock(c, mb);
                        if (msg != MAL_SUCCEED) {
                                sqlcleanup(m, err);
diff --git a/sql/common/sql_changeset.c b/sql/common/sql_changeset.c
--- a/sql/common/sql_changeset.c
+++ b/sql/common/sql_changeset.c
@@ -9,12 +9,6 @@
 #include "monetdb_config.h"
 #include "sql_catalog.h"
 
-int
-base_key( sql_base *b )
-{
-       return hash_key(b->name);
-}
-
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to