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", <, column_intern) < 0)
+ if (sql_trans_create_column_intern( &ic, tr, tt,
MSEL_NAME, <, 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", <, column_intern) < 0)
+ if (sql_trans_create_column_intern( &ic, tr, tt,
MSEL_NAME, <, 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]