Changeset: 075ef4dba3bf for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=075ef4dba3bf
Modified Files:
monetdb5/modules/mal/tablet.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
sql/storage/bat/res_table.c
Branch: arrays
Log Message:
materialisation of dimensions is performed in export_result andnot before
diffs (139 lines):
diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -629,6 +629,9 @@ TABLEToutput_file(Tablet *as, BAT *order
BUN maxnr = BATcount(order);
int ret = 0;
+ if(isBATarray(order))
+ maxnr = dimensionBATsize(order);
+
/* only set nr if it is zero or lower (bogus) to the maximum value
* possible (BATcount), if already set within BATcount range,
* preserve value such that for instance SQL's reply_size still
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
@@ -2428,8 +2428,8 @@ rel2bin_project( mvc *sql, sql_rel *rel,
else if (sub && sub->nrcols >= 1 && s->nrcols == 0)
s = stmt_const(sql->sa, bin_first_column(sql->sa, sub),
s);
- if(exp->type == e_dimension)
- s = stmt_materialise(sql->sa, s);
+// if(exp->type == e_dimension)
+// s = stmt_materialise(sql->sa, s);
s = stmt_rename(sql, rel, exp, s);
column_name(sql->sa, s); /* save column name */
list_append(pl, s);
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
@@ -782,6 +782,7 @@ static int
s->nr = getDestVar(q);
(void) pushInt(mb, q, 1);
} break;
+#if 0
case st_materialise: {
int l;
if ((l = _dumpstmt(sql, mb, s->op1)) < 0)
@@ -794,6 +795,7 @@ static int
s->nr = getDestVar(q);
return s->nr;
}
+#endif
case st_var:{
if (s->op1) {
if (VAR_GLOBAL(s->flag)) { /* globals */
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -1614,6 +1614,8 @@ mvc_export_head(backend *b, stream *s, i
return -1;
count = BATcount(order);
+ if(isBATarray(order))
+ count = dimensionBATsize(order);
} else
count = 1;
}
@@ -1774,6 +1776,8 @@ mvc_export_result(backend *b, stream *s,
count = m->reply_size;
if (m->reply_size != -2 && (count <= 0 || count >= BATcount(order))) {
count = BATcount(order);
+ if(isBATarray(order))
+ count = dimensionBATsize(order);
clean = 1;
}
if (json) {
diff --git a/sql/backends/monet5/sql_statement.c
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -303,7 +303,7 @@ stmt_deps(list *dep_list, stmt *s, int d
break;
/* simple case of statements of only statements
*/
case st_alias:
- case st_materialise:
+ // case st_materialise:
case st_tunion:
case st_tdiff:
case st_tinter:
@@ -1248,12 +1248,14 @@ stmt_alias(sql_allocator *sa, stmt *op1,
return s;
}
+#if 0
stmt* stmt_materialise(sql_allocator *sa, stmt *op1) {
stmt *s = stmt_create(sa, st_materialise);
s->op1 = op1;
s->nrcols = op1->nrcols;
return s;
}
+#endif
sql_subtype *
tail_type(stmt *st)
@@ -1336,8 +1338,8 @@ tail_type(stmt *st)
return sql_bind_localtype("bat");
case st_dimension:
return &st->op4.dval->type;
- case st_materialise:
- return tail_type(st->op1);
+// case st_materialise:
+// return tail_type(st->op1);
default:
fprintf(stderr, "missing tail type %u: %s\n", st->type,
st_type2string(st->type));
assert(0);
diff --git a/sql/backends/monet5/sql_statement.h
b/sql/backends/monet5/sql_statement.h
--- a/sql/backends/monet5/sql_statement.h
+++ b/sql/backends/monet5/sql_statement.h
@@ -91,7 +91,7 @@ typedef enum stmt_type {
st_alias,
- st_materialise,
+ //st_materialise,
/* used internally only */
st_list,
@@ -241,7 +241,7 @@ extern stmt *stmt_aggr(sql_allocator *sa
extern stmt *stmt_alias(sql_allocator *sa, stmt *op1, char *tname, char *name);
-extern stmt *stmt_materialise(sql_allocator *sa, stmt *op1);
+//extern stmt *stmt_materialise(sql_allocator *sa, stmt *op1);
extern stmt *stmt_output(sql_allocator *sa, stmt *l);
extern stmt *stmt_affected_rows(sql_allocator *sa, stmt *l);
diff --git a/sql/storage/bat/res_table.c b/sql/storage/bat/res_table.c
--- a/sql/storage/bat/res_table.c
+++ b/sql/storage/bat/res_table.c
@@ -62,6 +62,9 @@ res_col_create(sql_trans *tr, res_table
c->mtype = mtype;
if (mtype == TYPE_bat) {
BAT *b = (BAT*)val;
+
+ if(isBATarray(b))
+ b = materialiseDimensionBAT(b);
c->b = b->batCacheid;
bat_incref(c->b);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list