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