Changeset: c6da81d895d2 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c6da81d895d2 Modified Files: sql/server/rel_optimizer.c Branch: DVframework Log Message:
pmv: not every query has to prepare pmv. diffs (72 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -77,6 +77,7 @@ str* get_pkey_bound_to_dataview(str sche str form_pkey_select_str(sel_predicate** sps, int num_PERPAD, str* pkey_bound_to_dataview, str* select_str_per_pkey); str get_non_pkey_select_str(str schema_name, str dmdt_name); void prepare_pmv(mvc* sql, sql_rel* ret); +bit is_pmv_query(sql_rel *rel); list *discovered_table_pkeys; @@ -1736,6 +1737,51 @@ void compute_and_insert_unavailable_requ } +bit is_pmv_query(sql_rel *rel) +{ + if(rel == NULL) + return FALSE; + + switch (rel->op) { + case op_basetable: + case op_table: + { + sql_table *t; + if(rel->l != NULL) + t = rel->l; + else return FALSE; + if(strcmp(t->base.name, "windowmetadata") == 0) + return TRUE; + else return FALSE; + } + 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: + return (is_pmv_query(rel->l) || is_pmv_query(rel->r)); + case op_project: + case op_select: + case op_groupby: + case op_topn: + case op_sample: + case op_ddl: + return is_pmv_query(rel->l); + case op_insert: + case op_update: + case op_delete: + break; + } + + return FALSE; +} + static bit has_actual_data_table(sql_rel *rel) { @@ -6861,7 +6907,7 @@ rel_optimizer(mvc *sql, sql_rel *rel) { sql_rel *ret = _rel_optimizer(sql, rel, 0); - if(!sql->q_in_q) + if(!sql->q_in_q && is_pmv_query(rel)) { sql->q_in_q = 1; prepare_pmv(sql, ret); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list