Changeset: c1373f72f98b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c1373f72f98b
Modified Files:
sql/server/rel_propagate.c
Branch: Nov2019
Log Message:
Added defensive exp_label call before exp_ref
diffs (54 lines):
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -34,11 +34,12 @@ rel_generate_anti_expression(mvc *sql, s
*anti_rel = rel_project(sql->sa, *anti_rel, NULL);
if(!(res = rel_parse_val(sql, sa_message(sql->sa, "select %s;",
mt->part.pexp->exp), sql->emode, (*anti_rel)->l)))
return NULL;
- exp_label(sql->sa, res, ++sql->label);
} else {
assert(0);
}
(*anti_rel)->exps = new_exp_list(sql->sa);
+ if (!exp_name(res))
+ exp_label(sql->sa, res, ++sql->label);
append((*anti_rel)->exps, res);
res = exp_ref(sql->sa, res);
return res;
@@ -58,9 +59,11 @@ rel_create_common_relation(mvc *sql, sql
inserts = ((sql_rel*)(rel->r))->l;
for (node *n = t->columns.set->h, *m = inserts->exps->h; n &&
m; n = n->next, m = m->next) {
sql_column *col = n->data;
- sql_exp *before = m->data;
- sql_exp *help = exp_ref(sql->sa, before);
+ sql_exp *before = m->data, *help;
+ if (!exp_name(before))
+ exp_label(sql->sa, before, ++sql->label);
+ help = exp_ref(sql->sa, before);
exp_setname(sql->sa, help, t->base.name,
col->base.name);
list_append(l, help);
}
@@ -86,9 +89,11 @@ rel_generate_anti_insert_expression(mvc
inserts = inserts->l;
for (node *n = t->columns.set->h, *m = inserts->exps->h; n &&
m; n = n->next, m = m->next) {
sql_column *col = n->data;
- sql_exp *before = m->data;
- sql_exp *help = exp_ref(sql->sa, before);
+ sql_exp *before = m->data, *help;
+ if (!exp_name(before))
+ exp_label(sql->sa, before, ++sql->label);
+ help = exp_ref(sql->sa, before);
exp_setname(sql->sa, help, t->base.name,
col->base.name);
list_append(l, help);
}
@@ -106,6 +111,8 @@ rel_generate_anti_insert_expression(mvc
} else {
assert(0);
}
+ if (!exp_name(res))
+ exp_label(sql->sa, res, ++sql->label);
res = exp_ref(sql->sa, res);
return res;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list