Changeset: e51622df1e70 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e51622df1e70
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_statement.c
sql/server/rel_multiset.c
Branch: nested
Log Message:
small fixes for naming nested types
diffs (83 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
@@ -4876,9 +4876,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 (st && st->type->composite)
+ if (rel->l && st && st->type->composite)
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);
@@ -5875,8 +5877,8 @@ rel2bin_insert(backend *be, sql_rel *rel
if (!sql_insert_triggers(be, t, updates, 0))
return sql_error(sql, 10, SQLSTATE(27000) "INSERT INTO:
triggers failed for table '%s'", t->base.name);
- insert = inserts->op4.lval->h->data;
- if (insert->nrcols == 0) {
+ insert = inserts->op4.lval->h?inserts->op4.lval->h->data:NULL;
+ if (!insert || insert->nrcols == 0) {
cnt = stmt_atom_lng(be, 1);
} else {
cnt = stmt_aggr(be, insert, NULL, NULL, sql_bind_func(sql,
"sys", "count", sql_bind_localtype("void"), NULL, F_AGGR, true, true), 1, 0, 1);
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
@@ -3296,7 +3296,7 @@ dump_header(mvc *sql, MalBlkPtr mb, list
stmt *c = n->data;
sql_subtype *t = tail_type(c);
if (t->multiset) { /* properly handle subtable */
- printf("multiset\n");
+ printf("%multiset\n");
}
sql_alias *tname = table_name(sql->sa, c);
const char *_empty = "";
diff --git a/sql/server/rel_multiset.c b/sql/server/rel_multiset.c
--- a/sql/server/rel_multiset.c
+++ b/sql/server/rel_multiset.c
@@ -345,32 +345,33 @@ fm_project(visitor *v, sql_rel *rel)
sql_exp *e = n->data;
sql_subtype *t = exp_subtype(e);
if (t->multiset) {
+ sql_alias *cn = a_create(v->sql->sa,
e->alias.name);
sql_exp *rowid = exps_bind_column(exps,
exp_name(e), NULL, NULL, 0);
if (!rowid)
- rowid = exps_bind_column(exps,
"rowid", NULL, NULL, 0);
+ rowid = exps_bind_column2(exps,
cn, "rowid", NULL);
rowid = exp_ref(v->sql, rowid);
append(nexps, rowid);
if (t->type->composite) {
for(node *f =
t->type->d.fields->h; f; f = f->next) {
sql_arg *field =
f->data;
- sql_exp *mse =
exps_bind_column(exps, field->name, NULL, NULL, 0);
+ sql_exp *mse =
exps_bind_column2(exps, cn, field->name, NULL);
mse = exp_ref(v->sql,
mse);
append(nexps, mse);
}
} else {
- sql_exp *mse =
exps_bind_column(exps, "elements", NULL, NULL, 0);
+ sql_exp *mse =
exps_bind_column2(exps, cn, "elements", NULL);
mse = exp_ref(v->sql, mse);
append(nexps, mse);
}
- sql_exp *msid = exps_bind_column(exps,
"id", NULL, NULL, 0);
+ sql_exp *msid = exps_bind_column2(exps,
cn, "id", NULL);
if (!msid)
- msid = exps_bind_column(exps,
"multisetid", NULL, NULL, 0);
+ msid = exps_bind_column2(exps,
cn, "multisetid", NULL);
msid = exp_ref(v->sql, msid);
append(nexps, msid);
if (t->multiset == MS_ARRAY) {
- sql_exp *msnr =
exps_bind_column(exps, "nr", NULL, NULL, 0);
+ sql_exp *msnr =
exps_bind_column2(exps, cn, "nr", NULL);
if (!msnr)
- msnr =
exps_bind_column(exps, "multisetnr", NULL, NULL, 0);
+ msnr =
exps_bind_column2(exps, cn, "multisetnr", NULL);
msnr = exp_ref(v->sql, msnr);
append(nexps, msnr);
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]