Changeset: ab2a0cb637c2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ab2a0cb637c2
Modified Files:
        sql/server/rel_partition.c
Branch: default
Log Message:

has_groupby uses C switch


diffs (65 lines):

diff --git a/sql/server/rel_partition.c b/sql/server/rel_partition.c
--- a/sql/server/rel_partition.c
+++ b/sql/server/rel_partition.c
@@ -137,22 +137,47 @@ has_groupby(sql_rel *rel)
 {
        if (!rel)
                return 0;
-       if (is_groupby(rel->op))
-               return 1;
-       if (is_join(rel->op) || is_semi(rel->op) || is_set(rel->op) || 
is_merge(rel->op))
-               return has_groupby(rel->l) || has_groupby(rel->r);
-       if (is_simple_project(rel->op) || is_select(rel->op) || 
is_topn(rel->op) || is_sample(rel->op))
-               return has_groupby(rel->l);
-       if (is_insert(rel->op) || is_update(rel->op) || is_delete(rel->op) || 
is_truncate(rel->op))
-               return has_groupby(rel->r);
-       if (is_ddl(rel->op)) {
-               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)
+
+       switch (rel->op) {
+               case op_groupby:
+                       return 1;
+               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_merge:
+                       return has_groupby(rel->l) || has_groupby(rel->r);
+               case op_project:
+               case op_select:
+               case op_topn:
+               case op_sample:
                        return has_groupby(rel->l);
-               if (rel->flag == ddl_list || rel->flag == ddl_exception)
-                       return has_groupby(rel->l) || has_groupby(rel->r);
+               case op_insert:
+               case op_update:
+               case op_delete:
+               case op_truncate:
+                       return has_groupby(rel->r);
+               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)
+                               return has_groupby(rel->l);
+                       if (rel->flag == ddl_list || rel->flag == ddl_exception)
+                               return has_groupby(rel->l) || 
has_groupby(rel->r);
+                       return 0;
+               case op_table:
+                       if (IS_TABLE_PROD_FUNC(rel->flag) || rel->flag == 
TABLE_FROM_RELATION)
+                               return has_groupby(rel->l);
+                       return 0;
+               case op_basetable:
+                       return 0;
        }
-       if (rel->op == op_table && (IS_TABLE_PROD_FUNC(rel->flag) || rel->flag 
== TABLE_FROM_RELATION))
-               return has_groupby(rel->l);
        return 0;
 }
 
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to