Changeset: b2bfd42795eb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b2bfd42795eb
Modified Files:
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_select.c
sql/server/rel_semantic.c
Branch: Aug2011
Log Message:
fix bug 2921 (part 2). Internal expressions shouldn't be renamed.
diffs (72 lines):
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
@@ -316,6 +316,13 @@ exp_setname(sql_allocator *sa, sql_exp *
e->rname = (rname)?sa_strdup(sa, rname):NULL;
}
+void
+noninternexp_setname(sql_allocator *sa, sql_exp *e, char *rname, char *name )
+{
+ if (!is_intern(e))
+ exp_setname(sa, e, rname, name);
+}
+
str
number2name(str s, int len, int i)
{
diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h
--- a/sql/server/rel_exp.h
+++ b/sql/server/rel_exp.h
@@ -62,6 +62,7 @@ extern sql_exp * exp_values(sql_allocato
extern sql_exp * exp_column(sql_allocator *sa, char *rname, char *name,
sql_subtype *t, int card, int has_nils, int intern);
extern sql_exp * exp_alias(sql_allocator *sa, char *arname, char *acname, char
*org_rname, char *org_cname, sql_subtype *t, int card, int has_nils, int
intern);
extern void exp_setname(sql_allocator *sa, sql_exp *e, char *rname, char *name
);
+extern void noninternexp_setname(sql_allocator *sa, sql_exp *e, char *rname,
char *name );
extern sql_exp* exp_label(sql_allocator *sa, sql_exp *e, int nr);
extern void exp_swap( sql_exp *e );
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
@@ -1069,8 +1069,8 @@ rel_table_optname(mvc *sql, sql_rel *sq,
if (!columnrefs && sq->exps) {
node *ne = sq->exps->h;
- for (; ne; ne = ne->next)
- exp_setname(sql->sa, ne->data, tname, NULL );
+ for (; ne; ne = ne->next)
+ noninternexp_setname(sql->sa, ne->data, tname,
NULL );
}
}
rel_add_intern(sql, sq);
@@ -1499,7 +1499,7 @@ table_ref(mvc *sql, sql_rel *rel, symbol
temp_table = rel_project(sql->sa, temp_table, exps);
set_processed(temp_table);
for (n = exps->h; n; n = n->next)
- exp_setname(sql->sa, n->data, tname, NULL);
+ noninternexp_setname(sql->sa, n->data, tname,
NULL);
return temp_table;
} else if (isView(t) /*&& sql->emode != m_instantiate */) {
/* instantiate base view */
@@ -1520,7 +1520,7 @@ table_ref(mvc *sql, sql_rel *rel, symbol
for (n = t->columns.set->h, m = rel->exps->h; n
&& m; n = n->next, m = m->next) {
sql_column *c = n->data;
sql_exp *e = m->data;
-
+
exp_setname(sql->sa, e, tname,
c->base.name);
}
}
diff --git a/sql/server/rel_semantic.c b/sql/server/rel_semantic.c
--- a/sql/server/rel_semantic.c
+++ b/sql/server/rel_semantic.c
@@ -253,7 +253,7 @@ rel_semantic(mvc *sql, symbol *s)
node *ne = nrel->exps->h;
for (; ne; ne = ne->next)
- exp_setname(sql->sa, ne->data, name,
NULL );
+ noninternexp_setname(sql->sa, ne->data,
name, NULL );
}
}
rel = rel_semantic(sql, select);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list