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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to