Changeset: ea2354204660 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ea2354204660
Modified Files:
sql/server/rel_rel.c
Branch: Jan2022
Log Message:
Destroy inner relations of table relations. Cleanup
diffs (66 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
@@ -89,23 +89,51 @@ rel_destroy_(sql_rel *rel)
{
if (!rel)
return;
- if (is_join(rel->op) ||
- is_semi(rel->op) ||
- is_select(rel->op) ||
- is_set(rel->op) ||
- is_topn(rel->op) ||
- is_sample(rel->op) ||
- is_merge(rel->op)) {
+ switch(rel->op){
+ case op_basetable:
+ break;
+ case op_table:
+ if ((IS_TABLE_PROD_FUNC(rel->flag) || rel->flag ==
TABLE_FROM_RELATION) && rel->l)
+ rel_destroy(rel->l);
+ break;
+ case op_join:
+ case op_left:
+ case op_right:
+ case op_full:
+ case op_semi:
+ case op_anti:
+ case op_union:
+ case op_inter:
+ case op_except:
+ case op_insert:
+ case op_update:
+ case op_delete:
+ case op_merge:
if (rel->l)
rel_destroy(rel->l);
if (rel->r)
rel_destroy(rel->r);
- } else if (is_simple_project(rel->op) || is_groupby(rel->op)) {
+ break;
+ case op_project:
+ case op_groupby:
+ case op_select:
+ case op_topn:
+ case op_sample:
+ case op_truncate:
if (rel->l)
rel_destroy(rel->l);
- } else if (is_insert(rel->op) || is_update(rel->op) ||
is_delete(rel->op) || is_truncate(rel->op)) {
- if (rel->r)
- rel_destroy(rel->r);
+ break;
+ case op_ddl:
+ if (rel->flag == ddl_output || rel->flag == ddl_create_seq ||
rel->flag == ddl_alter_seq || rel->flag == ddl_alter_table || rel->flag ==
ddl_create_table || rel->flag == ddl_create_view) {
+ if (rel->l)
+ rel_destroy(rel->l);
+ } else if (rel->flag == ddl_list || rel->flag == ddl_exception)
{
+ if (rel->l)
+ rel_destroy(rel->l);
+ if (rel->r)
+ rel_destroy(rel->r);
+ }
+ break;
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list