Changeset: 924377be0ef8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/924377be0ef8 Modified Files: sql/backends/monet5/rel_bin.c sql/include/sql_relation.h sql/server/rel_basetable.c sql/server/rel_exp.c Branch: nested Log Message:
protect against virtual cols diffs (71 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 @@ -4926,11 +4926,11 @@ rel2bin_project(backend *be, sql_rel *re return NULL; for (en = rel->exps->h; en; en = en->next) { sql_exp *exp = en->data; - /* we need to ouput composite properly, for insert statements - sql_subtype *st = exp_subtype(exp); - if (rel->l && st && st->type->composite) + + if (exp->virt) { + /* we need to ouput composite properly, for insert statements */ continue; - */ + } int oldvtop = be->mb->vtop, oldstop = be->mb->stop; stmt *s = exp_bin(be, exp, sub, NULL /*psub*/, NULL, NULL, NULL, NULL, 0, 0, 0); diff --git a/sql/include/sql_relation.h b/sql/include/sql_relation.h --- a/sql/include/sql_relation.h +++ b/sql/include/sql_relation.h @@ -33,7 +33,6 @@ typedef struct sql_alias { int label; struct sql_alias *parent; const char *name; - //const char *rname; } sql_alias; typedef struct sql_var_name { @@ -70,6 +69,7 @@ typedef struct expression { row:1, /* e_atom ->f is a list of values or a list of attributes aka a row/tuple */ base:1, + virt:1, ref:1, /* used to indicate an other expression may reference this one */ used:1, /* used for quick dead code removal */ symmetric:1; /* compare between symmetric */ 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 @@ -383,6 +383,8 @@ bind_col_exp(mvc *sql, rel_base_t *ba, s e->nid = -(ba->basenr + c->colnr); e->alias.label = e->nid; } + if (c->type.type->composite && !c->type.multiset) + e->virt = 1; if (c->t->pkey && ((sql_kc*)c->t->pkey->k.columns->h->data)->c == c) { p = e->p = prop_create(sql->sa, PROP_HASHCOL, e->p); p->value.pval = c->t->pkey; diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -761,6 +761,8 @@ exp_propagate(allocator *sa, sql_exp *ne set_unique(ne); if (is_basecol(oe)) set_basecol(ne); + if (oe->virt) + ne->virt = 1; ne->p = prop_copy(sa, oe->p); return ne; } @@ -790,6 +792,8 @@ exp_ref_by_label(allocator *sa, sql_exp set_unique(e); if (is_intern(o)) set_intern(e); + if (o->virt) + e->virt = 1; return exp_propagate(sa, e, o); } _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org