Changeset: 7c3c412601b7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7c3c412601b7
Modified Files:
sql/backends/monet5/sql_statement.c
sql/server/rel_basetable.c
sql/server/rel_dump.c
Branch: nested
Log Message:
Changes to fix unnest code
diffs (59 lines):
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
@@ -2628,9 +2628,11 @@ stmt_project(backend *be, stmt *op1, stm
if (op2->nested) {
list *ops = unnest_stmt(op2);
list *nops = sa_list(be->mvc->sa);
+ sql_subtype *st = tail_type(op2);
+ bool propagate = !st->multiset && st->type->composite;
for(node *n = ops->h; n; n = n->next) {
stmt *i = n->data;
- if (!i->nested)
+ if (propagate || (st->multiset && n == ops->t))
i = stmt_project(be, op1, i);
append(nops, i);
}
@@ -2638,7 +2640,7 @@ stmt_project(backend *be, stmt *op1, stm
if (s == NULL)
return NULL;
s->nested = true;
- s->subtype = op2->subtype;
+ s->subtype = *st;
return s;
}
InstrPtr q = stmt_project_join(be, op1, op2, false);
@@ -3325,7 +3327,7 @@ nested_dump_header(mvc *sql, MalBlkPtr m
lenPtr = pushInt(mb, lenPtr, t->digits);
scalePtr = pushInt(mb, scalePtr, t->scale);
if (virt || c->nested) {
- multisetPtr = pushInt(mb, multisetPtr,
c->multiset + ((virt || c->nested)?4:0));
+ multisetPtr = pushInt(mb, multisetPtr,
c->subtype.multiset + ((virt || c->nested)?4:0));
InstrPtr q = newStmt(mb, batRef, newRef);
if (q == NULL)
diff --git a/sql/server/rel_basetable.c b/sql/server/rel_basetable.c
--- a/sql/server/rel_basetable.c
+++ b/sql/server/rel_basetable.c
@@ -701,7 +701,7 @@ rewrite_basetable(mvc *sql, sql_rel *rel
continue;
sql_column *c = cn->data;
- sql_exp *e = exp_alias(sql, atname, c->base.name, ta,
c->base.name, &c->type, CARD_MULTI, c->null, is_column_unique(c), 0);
+ sql_exp *e = exp_alias(sql, atname, c->base.name, ta,
c->base.name, &c->type, CARD_MULTI, c->null, is_column_unique(c),
c->column_type == 16);
if (e == NULL) {
rel_destroy(rel);
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -373,6 +373,9 @@ exp_print(mvc *sql, stream *fout, sql_ex
mnstr_printf(fout, "\"%s\"", dump_escape_ident(sql->ta,
exp_name(e)));
}
+ if (mvc_debug_on(sql, 4) && is_intern(e))
+ mnstr_printf(fout, " INTERN ");
+
if (e->comment) {
str s = ATOMformat(TYPE_str, e->comment);
mnstr_printf(fout, " COMMENT %s ", s);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]