Changeset: e16fec7772f5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e16fec7772f5
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_updates.c
Branch: Nov2019
Log Message:

Don't do exp_name == 'L', to test for labels, has it can give false positives. 
Also use sizeof to determine the size of the buffer for cleaner code


diffs (166 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
@@ -645,7 +645,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
                }
                if (cond_execution) {
                        /* var_x = nil; */
-                       nme = number2name(name, 16, ++sql->label);
+                       nme = number2name(name, sizeof(name), ++sql->label);
                        (void)stmt_var(be, nme, exp_subtype(e), 1, 2);
                        /* if_barrier ... */
                        cond_execution = stmt_cond(be, cond_execution, NULL, 0, 
0);
@@ -1674,7 +1674,7 @@ rel2bin_table(backend *be, sql_rel *rel,
                char name[16], *nme;
                sql_rel *fr;
 
-               nme = number2name(name, 16, ++sql->remote);
+               nme = number2name(name, sizeof(name), ++sql->remote);
 
                l = rel2bin_args(be, rel->l, sa_list(sql->sa));
                if(!l)
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
@@ -516,7 +516,7 @@ exp_alias(sql_allocator *sa, const char 
 }
 
 sql_exp *
-exp_alias_or_copy( mvc *sql, const char *tname, const char *cname, sql_rel 
*orel, sql_exp *old)
+exp_alias_or_copy(mvc *sql, const char *tname, const char *cname, sql_rel 
*orel, sql_exp *old)
 {
        sql_exp *ne = NULL;
 
@@ -526,12 +526,12 @@ exp_alias_or_copy( mvc *sql, const char 
        if (!tname && old->type == e_column)
                tname = old->l;
 
-       if (!cname && exp_name(old) && exp_name(old)[0] == 'L') {
+       if (!cname && exp_name(old) && has_label(old)) {
                ne = exp_column(sql->sa, exp_relname(old), exp_name(old), 
exp_subtype(old), orel?orel->card:CARD_ATOM, has_nil(old), is_intern(old));
                return exp_propagate(sql->sa, ne, old);
        } else if (!cname) {
                char name[16], *nme;
-               nme = number2name(name, 16, ++sql->label);
+               nme = number2name(name, sizeof(name), ++sql->label);
 
                exp_setname(sql->sa, old, nme, nme);
                ne = exp_column(sql->sa, exp_relname(old), exp_name(old), 
exp_subtype(old), orel?orel->card:CARD_ATOM, has_nil(old), is_intern(old));
@@ -701,7 +701,7 @@ exp_setrelname(sql_allocator *sa, sql_ex
 {
        char name[16], *nme;
 
-       nme = number2name(name, 16, nr);
+       nme = number2name(name, sizeof(name), nr);
        e->alias.label = 0;
        e->alias.rname = sa_strdup(sa, nme);
 }
@@ -711,7 +711,7 @@ make_label(sql_allocator *sa, int nr)
 {
        char name[16], *nme;
 
-       nme = number2name(name, 16, nr);
+       nme = number2name(name, sizeof(name), nr);
        return sa_strdup(sa, nme);
 }
 
@@ -1880,7 +1880,7 @@ is_identity( sql_exp *e, sql_rel *r)
                        sql_exp *re = NULL;
                        if (e->l)
                                re = exps_bind_column2(r->exps, e->l, e->r);
-                       if (!re && ((char*)e->r)[0] == 'L')
+                       if (!re && has_label(e))
                                re = exps_bind_column(r->exps, e->r, NULL);
                        if (re)
                                return is_identity(re, r->l);
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -8330,13 +8330,13 @@ rel_dicttable(mvc *sql, sql_column *c, c
 
        ie = exp_indexcol(sql, e, tname, c->base.name, de, 1);
         nr = ++sql->label;
-       nme = sa_strdup(sql->sa, number2name(name, 16, nr));
+       nme = sa_strdup(sql->sa, number2name(name, sizeof(name), nr));
        exp_setname(sql->sa, ie, nme, nme);
        append(rel->exps, ie);
 
        ie = exp_stringscol(sql, e, tname, c->base.name);
         nr = ++sql->label;
-       nme = sa_strdup(sql->sa, number2name(name, 16, nr));
+       nme = sa_strdup(sql->sa, number2name(name, sizeof(name), nr));
        exp_setname(sql->sa, ie, nme, nme);
        append(rel->exps, ie);
        e->p = prop_create(sql->sa, PROP_HASHCOL, e->p);
@@ -8369,7 +8369,7 @@ rel_add_dicts(int *changes, mvc *sql, sq
                                        char name[16], *nme;
                                        sql_rel *vt = rel_dicttable(sql, c, 
rname, de);
 
-                                       nme = sa_strdup(sql->sa, 
number2name(name, 16, nr));
+                                       nme = sa_strdup(sql->sa, 
number2name(name, sizeof(name), nr));
                                        if (!vcols)
                                                vcols = sa_list(sql->sa);
                                        append(vcols, vt);
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -485,7 +485,7 @@ rel_psm_return( sql_query *query, sql_su
                        char name[16];
 
                        if (!cname)
-                               cname = sa_strdup(sql->sa, number2name(name, 
16, ++sql->label));
+                               cname = sa_strdup(sql->sa, number2name(name, 
sizeof(name), ++sql->label));
                        if (!isproject) 
                                e = exp_ref(sql->sa, e);
                        e = rel_check_type(sql, &ce->type, oexps_rel, e, 
type_equal);
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -509,7 +509,7 @@ rel_label( mvc *sql, sql_rel *r, int all
        char tname[16], *tnme;
        char cname[16], *cnme = NULL;
 
-       tnme = number2name(tname, 16, nr);
+       tnme = number2name(tname, sizeof(tname), nr);
        if (!is_project(r->op)) {
                r = rel_project(sql->sa, r, rel_projections(sql, r, NULL, 1, 
1));
                set_processed(r);
@@ -524,7 +524,7 @@ rel_label( mvc *sql, sql_rel *r, int all
                        if (!e->freevar) {
                                if (all) {
                                        nr = ++sql->label;
-                                       cnme = number2name(cname, 16, nr);
+                                       cnme = number2name(cname, 
sizeof(cname), nr);
                                }
                                exp_setname(sql->sa, e, tnme, cnme );
                        }
@@ -539,7 +539,7 @@ rel_label( mvc *sql, sql_rel *r, int all
                for (; ne; ne = ne->next) {
                        if (all) {
                                nr = ++sql->label;
-                               cnme = number2name(cname, 16, nr);
+                               cnme = number2name(cname, sizeof(cname), nr);
                        }
                        exp_setname(sql->sa, ne->data, tnme, cnme );
                }
@@ -664,7 +664,7 @@ rel_groupby_add_aggr(mvc *sql, sql_rel *
 
        if ((m=exps_find_match_exp(rel->exps, e)) == NULL) {
                if (!exp_name(e)) {
-                       nme = number2name(name, 16, ++sql->label);
+                       nme = number2name(name, sizeof(name), ++sql->label);
                        exp_setname(sql->sa, e, nme, nme);
                }
                append(rel->exps, e);
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -757,7 +757,7 @@ static sql_rel *
 rel_update_join_idx(mvc *sql, const char* alias, sql_idx *i, sql_rel *updates)
 {
        int nr = ++sql->label;
-       char name[16], *nme = number2name(name, 16, nr);
+       char name[16], *nme = number2name(name, sizeof(name), nr);
        char *iname = sa_strconcat( sql->sa, "%", i->base.name);
 
        int need_nulls = 0;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to