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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list