Changeset: 4d2593b920f2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/4d2593b920f2 Modified Files: sql/server/rel_unnest.c Branch: Mar2025 Log Message:
rehash on inplace type change
diffs (54 lines):
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -2494,6 +2494,7 @@ static sql_rel *
rel_set_type(visitor *v, sql_rel *rel)
{
if (is_project(rel->op) && rel->l) {
+ bool clear_hash = false;
if (is_set(rel->op)) {
sql_rel *l = rel->l, *r = rel->r;
list *exps = l->exps;
@@ -2502,13 +2503,18 @@ rel_set_type(visitor *v, sql_rel *rel)
sql_exp *e = n->data;
sql_subtype *t = exp_subtype(e);
- if (t && !t->type->localtype)
+ if (t && !t->type->localtype) {
n->data = exp_set_type(v->sql,
m->data, e);
+ clear_hash = true;
+ }
}
+ if (clear_hash)
+ list_hash_clear(exps);
if (exps != r->exps)
exps = r->exps;
else
exps = NULL;
+ clear_hash = false;
}
} else if (is_munion(rel->op)) {
list *l = rel->l;
@@ -2519,9 +2525,13 @@ rel_set_type(visitor *v, sql_rel *rel)
sql_exp *e = n->data;
sql_subtype *t = exp_subtype(e);
- if (t && !t->type->localtype)
+ if (t && !t->type->localtype) {
n->data = exp_set_type(v->sql,
m->data, e);
+ clear_hash = true;
+ }
}
+ if (clear_hash)
+ list_hash_clear(exps);
}
} else if ((is_simple_project(rel->op) || is_groupby(rel->op))
&& rel->l) {
list *exps = rel->exps;
@@ -2552,6 +2562,7 @@ rel_set_type(visitor *v, sql_rel *rel)
int label = e->alias.label;
n->data = e = exp_convert(v->sql, e, t, exp_subtype(te));
e->alias.label = label;
+
list_hash_clear(l->exps);
break;
}
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]
