Changeset: bb7183bff78b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bb7183bff78b
Modified Files:
        sql/backends/monet5/sql_statement.c
        sql/include/sql_catalog.h
        sql/server/rel_exp.c
        sql/server/rel_multiset.c
        sql/server/rel_select.c
        sql/storage/store.c
Branch: nested
Log Message:

use more unique names (todo use % prefixed names) for id/nr
made it more configurable using macros


diffs (146 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
@@ -2632,8 +2632,13 @@ stmt_project(backend *be, stmt *op1, stm
                bool propagate = !st->multiset && st->type->composite;
                for(node *n = ops->h; n; n = n->next) {
                        stmt *i = n->data;
-                       if (propagate || (st->multiset && n == ops->t))
+                       if (propagate || (st->multiset && n == ops->t)) {
+                               stmt *oi = i;
                                i = stmt_project(be, op1, i);
+                               i->tname = oi->tname;
+                               i->cname = oi->cname;
+                               i->label = oi->label;
+                       }
                        append(nops, i);
                }
                stmt *s = stmt_list(be, nops);
@@ -2641,6 +2646,9 @@ stmt_project(backend *be, stmt *op1, stm
                        return NULL;
                s->nested = true;
                s->subtype = *st;
+               s->tname = op2->tname;
+               s->cname = op2->cname;
+               s->label = op2->label;
                return s;
        }
        InstrPtr q = stmt_project_join(be, op1, op2, false);
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -945,7 +945,10 @@ typedef struct pl {
 
 typedef int msid_t;
 typedef int msindex_t;
-#define MSID_NAME "multisetid"
-#define MSINDEX_NAME "multisetnr"
+#define MSEL_NAME "elements"
+#define MSID_NAME "ms_id"
+#define MSNR_NAME "ms_nr"
+#define MSID_TYPENAME "int"
+#define MSNR_TYPENAME "int"
 
 #endif /* SQL_CATALOG_H */
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
@@ -380,17 +380,18 @@ nested_exps(mvc *sql, sql_subtype *t, sq
                        append(nested, e);
                }
        } else {
-        sql_exp *e = exp_alias(sql, atname, "elements", atname, "elements", t, 
CARD_MULTI, true, false, 1);
+        sql_exp *e = exp_alias(sql, atname, MSEL_NAME, atname, MSEL_NAME, t, 
CARD_MULTI, true, false, 1);
                append(nested, e);
        }
-       sql_subtype *it = sql_bind_localtype("int");
+       sql_subtype *it = sql_bind_localtype(MSID_TYPENAME);
        if (t->multiset) {
-               sql_exp *e = exp_alias(sql, atname, "id", atname, "id", it, 
CARD_MULTI, true, false, 1);
+               sql_exp *e = exp_alias(sql, atname, MSID_NAME, atname, 
MSID_NAME, it, CARD_MULTI, true, false, 1);
                set_intern(e);
                append(nested, e);
        }
        if (t->multiset == MS_ARRAY) {
-               sql_exp *e = exp_alias(sql, atname, "nr", atname, "nr", it, 
CARD_MULTI, true, false, 1);
+               sql_subtype *it = sql_bind_localtype(MSNR_TYPENAME);
+               sql_exp *e = exp_alias(sql, atname, MSNR_NAME, atname, 
MSNR_NAME, it, CARD_MULTI, true, false, 1);
                set_intern(e);
                append(nested, e);
        }
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
@@ -43,7 +43,7 @@ ms_add_join_exps(visitor *v, sql_rel *re
                        v->changes++;
                        sql_exp *le = exp_ref(v->sql, e);
                        list *rexps = rel_projections(v->sql, rel->r, NULL, 0, 
1);
-                       sql_exp *re = exps_bind_column(rexps, "id", NULL, NULL, 
0);
+                       sql_exp *re = exps_bind_column(rexps, MSID_NAME, NULL, 
NULL, 0);
                        if (le && re) {
                                re = exp_ref(v->sql, re);
                                e = exp_compare(v->sql->sa, le, re, cmp_equal);
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -761,7 +761,7 @@ rel_unnest_func(sql_query *query, list *
                                return sql_error(query->sql, ERR_NOTFOUND, 
SQLSTATE(42000) "SELECT: unnest multiset not found");
                        sql_rel *rp = rel_project(query->sql->sa, NULL, 
append(sa_list(query->sql->sa), e));
                        rp->card = CARD_MULTI;
-                       sql_exp *el = exps_bind_column(e->f, "elements", NULL, 
NULL, 1);
+                       sql_exp *el = exps_bind_column(e->f, MSEL_NAME, NULL, 
NULL, 1);
                        return rel_project(query->sql->sa, rp, 
append(sa_list(query->sql->sa), exp_ref(query->sql, el)));
                }
                sql_rel *r = query_fetch_outer(query, e->freevar-1);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3837,11 +3837,11 @@ sql_trans_create_column_intern(sql_colum
                        sql_column *ic = NULL;
                        sql_subtype lt = *tpe;
                        lt.multiset = MS_VALUE;
-                       if (sql_trans_create_column_intern( &ic, tr, tt, 
"elements", &lt, column_intern) < 0)
+                       if (sql_trans_create_column_intern( &ic, tr, tt, 
MSEL_NAME, &lt, column_intern) < 0)
                                return -2;
                }
                if (tpe->multiset == MS_SETOF || tpe->multiset == MS_ARRAY) { 
/* sets and arrays need oid col */
-                       char *name = "id";
+                       char *name = MSID_NAME;
                        sql_subtype tp = *sql_bind_localtype("int");
                        sql_column *ic = NULL;
                        if (sql_trans_create_column_intern( &ic, tr, tt, name, 
&tp, column_intern) < 0)
@@ -3849,7 +3849,7 @@ sql_trans_create_column_intern(sql_colum
                        needs_data = true;      /* column its self is reference 
id */
                }
                if (tpe->multiset == MS_ARRAY) { /* array need order */
-                       char *name = "nr";
+                       char *name = MSNR_NAME;
                        sql_subtype tp = *sql_bind_localtype("int");
                        sql_column *ic = NULL;
                        if (sql_trans_create_column_intern( &ic, tr, tt, name, 
&tp, column_intern) < 0)
@@ -3951,20 +3951,20 @@ sql_trans_copy_column( sql_trans *tr, sq
                        sql_column *ic = NULL;
                        sql_subtype lt = c->type;
                        lt.multiset = MS_VALUE;
-                       if (sql_trans_create_column_intern( &ic, tr, tt, 
"elements", &lt, column_intern) < 0)
+                       if (sql_trans_create_column_intern( &ic, tr, tt, 
MSEL_NAME, &lt, column_intern) < 0)
                                return -2;
                }
                if (c->type.multiset == MS_SETOF || c->type.multiset == 
MS_ARRAY) { /* sets and arrays need oid col */
-                       char *name = "id";
-                       sql_subtype tp = *sql_bind_localtype("int");
+                       char *name = MSID_NAME;
+                       sql_subtype tp = *sql_bind_localtype(MSID_TYPENAME);
                        sql_column *ic = NULL;
                        if (sql_trans_create_column_intern( &ic, tr, tt, name, 
&tp, column_intern) < 0)
                                return -2;
                        needs_data = true;      /* column its self is reference 
id */
                }
                if (c->type.multiset == MS_ARRAY) { /* array need order */
-                       char *name = "nr";
-                       sql_subtype tp = *sql_bind_localtype("int");
+                       char *name = MSNR_NAME;
+                       sql_subtype tp = *sql_bind_localtype(MSNR_TYPENAME);
                        sql_column *ic = NULL;
                        if (sql_trans_create_column_intern( &ic, tr, tt, name, 
&tp, column_intern) < 0)
                                return -2;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to