Changeset: 82365f63af25 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/82365f63af25 Modified Files: sql/server/rel_rel.c Branch: default Log Message:
Now that inplacing relations is becoming more common, make sure some properties always get reset diffs (102 lines): 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 @@ -456,20 +456,27 @@ rel_first_column(mvc *sql, sql_rel *r) return NULL; } +static void +rel_inplace_reset_props(sql_rel *rel) +{ + rel->flag = 0; + rel->attr = NULL; + reset_dependent(rel); + set_processed(rel); +} + sql_rel * rel_inplace_basetable(sql_rel *rel, sql_rel *bt) { assert(is_basetable(bt->op)); rel_destroy_(rel); - set_processed(rel); + rel_inplace_reset_props(rel); rel->l = bt->l; rel->r = bt->r; - rel->attr = NULL; rel->op = op_basetable; rel->exps = bt->exps; rel->card = CARD_MULTI; - rel->flag = 0; rel->nrcols = bt->nrcols; return rel; } @@ -478,14 +485,12 @@ sql_rel * rel_inplace_setop(mvc *sql, sql_rel *rel, sql_rel *l, sql_rel *r, operator_type setop, list *exps) { rel_destroy_(rel); + rel_inplace_reset_props(rel); rel->l = l; rel->r = r; - rel->attr = NULL; rel->op = setop; rel->card = CARD_MULTI; - rel->flag = 0; rel_setop_set_exps(sql, rel, exps, false); - set_processed(rel); return rel; } @@ -502,15 +507,12 @@ rel_inplace_project(sql_allocator *sa, s } else { rel_destroy_(rel); } - set_processed(rel); - + rel_inplace_reset_props(rel); rel->l = l; rel->r = NULL; - rel->attr = NULL; rel->op = op_project; rel->exps = e; rel->card = CARD_MULTI; - rel->flag = 0; if (l) { rel->nrcols = l->nrcols; assert (exps_card(rel->exps) <= rel->card); @@ -522,14 +524,12 @@ sql_rel * rel_inplace_select(sql_rel *rel, sql_rel *l, list *exps) { rel_destroy_(rel); - set_processed(rel); + rel_inplace_reset_props(rel); rel->l = l; rel->r = NULL; - rel->attr = NULL; rel->op = op_select; rel->exps = exps; rel->card = exps_card(exps); - rel->flag = 0; rel->card = CARD_ATOM; /* no relation */ if (l) { rel->card = l->card; @@ -544,17 +544,15 @@ sql_rel * rel_inplace_groupby(sql_rel *rel, sql_rel *l, list *groupbyexps, list *exps ) { rel_destroy_(rel); + rel_inplace_reset_props(rel); rel->card = CARD_ATOM; if (groupbyexps) rel->card = CARD_AGGR; rel->l = l; rel->r = groupbyexps; - rel->attr = NULL; rel->exps = exps; rel->nrcols = l->nrcols; rel->op = op_groupby; - rel->flag = 0; - set_processed(rel); return rel; } _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org