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

Reply via email to