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

Reply via email to