Changeset: f0b87cf94c3a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f0b87cf94c3a
Modified Files:
        sql/server/rel_statistics.c
Branch: properties
Log Message:

Separate statistics gathering per relation type


diffs (70 lines):

diff --git a/sql/server/rel_statistics.c b/sql/server/rel_statistics.c
--- a/sql/server/rel_statistics.c
+++ b/sql/server/rel_statistics.c
@@ -17,13 +17,13 @@
 #include "sql_mvc.h"
 
 static sql_exp *
-rel_get_statisitics(visitor *v, sql_rel *rel, sql_exp *e, int depth)
+rel_basetable_get_statistics(visitor *v, sql_rel *rel, sql_exp *e, int depth)
 {
        mvc *sql = v->sql;
        sql_column *c = NULL;
-       (void) depth;
 
-       if (is_basetable(rel->op) && (c = name_find_column(rel, e->l, e->r, -2, 
NULL))) {
+       (void)depth;
+       if ((c = name_find_column(rel, e->l, e->r, -2, NULL))) {
                ValPtr min = NULL, max = NULL;
 
                if (has_nil(e) && mvc_has_no_nil(sql, c))
@@ -41,11 +41,47 @@ rel_get_statisitics(visitor *v, sql_rel 
        return e;
 }
 
+static sql_rel *
+rel_get_statisitics(visitor *v, sql_rel *rel)
+{
+       switch(rel->op){
+       case op_basetable:
+               rel->exps = exps_exp_visitor_bottomup(v, rel, rel->exps, 0, 
&rel_basetable_get_statistics, false);
+               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_select:
+       case op_project:
+       case op_groupby:
+       case op_insert:
+       case op_update:
+       case op_delete:
+               break;
+       /*These relations are less important for now
+       case op_ddl:
+       case op_table:
+       case op_truncate:
+       case op_topn:
+       case op_sample:*/
+       default:
+               break;
+       }
+
+       return rel;
+}
+
 sql_rel *
 rel_statistics(mvc *sql, sql_rel *rel)
 {
-       visitor v = { .sql = sql, .value_based_opt = 0, .storage_based_opt = 1 
};
+       visitor v = { .sql = sql };
 
-       rel = rel_exp_visitor_bottomup(&v, rel, &rel_get_statisitics, false);
+       rel = rel_visitor_bottomup(&v, rel, &rel_get_statisitics);
        return rel;
 }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to