Changeset: eba484468a39 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eba484468a39
Modified Files:
sql/backends/monet5/sql_rdf.c
sql/backends/monet5/sql_rdf_jgraph.c
sql/server/rel_optimizer.c
Branch: rdf
Log Message:
Fix the problem in rel_optimizer in pushing down topn, distinct proj
(before running leakcheck)
diffs (107 lines):
diff --git a/sql/backends/monet5/sql_rdf.c b/sql/backends/monet5/sql_rdf.c
--- a/sql/backends/monet5/sql_rdf.c
+++ b/sql/backends/monet5/sql_rdf.c
@@ -1656,7 +1656,8 @@ static void appendResult(BAT **r_obats,
for (j = 0; j < np; j++){
//Output result
- if (sbt == (oid)3835096557682764 ){
+ //if (sbt == (oid)3835096557682764 ){
+ if (sbt == (oid)1460151441700192){
printf(BUNFMT " | ", tmpres[j]);
}
/*
@@ -1668,7 +1669,8 @@ static void appendResult(BAT **r_obats,
BUNappend(r_obats[j], &(tmpres[j]), TRUE);
}
- if (sbt == (oid)3835096557682764 ){
+ //if (sbt == (oid)3835096557682764 ){
+ if (sbt == (oid) 1460151441700192){
printf("\n");
}
}
diff --git a/sql/backends/monet5/sql_rdf_jgraph.c
b/sql/backends/monet5/sql_rdf_jgraph.c
--- a/sql/backends/monet5/sql_rdf_jgraph.c
+++ b/sql/backends/monet5/sql_rdf_jgraph.c
@@ -2831,7 +2831,7 @@ static
int** get_inner_join_groups_in_sp_group(jgraph *jg, int* group, int nnode, int
*nijgroup, int **nnodes_per_ijgroup){
int max_ijId = 0; //max inner join pattern Id
- int **ijgroup;
+ int **ijgroup = NULL;
int *idx;
int i, j;
@@ -3014,8 +3014,8 @@ sql_rel* _group_star_pattern_for_single_
int i;
- sql_rel **ijrels; //rel for inner join groups
- sql_rel **edge_ijrels; //sql_rel connecting each pair of ijrels
+ sql_rel **ijrels = NULL; //rel for inner join groups
+ sql_rel **edge_ijrels = NULL; //sql_rel connecting each pair of ijrels
sql_rel *tbl_m_rel = NULL;
int is_contain_mv = 0;
int *ingroup_contain_mv = NULL; sql_rel *tmprel_rdfscan = NULL;
@@ -3147,6 +3147,7 @@ sql_rel* union_sp_from_all_matching_tbls
}
if (num_match_tbl > 1){
+ //_rel_print(c, tbl_m_rels[0]);
get_union_expr(c, tbl_m_rels[0], union_exps);
printf("Union expresion is: \n");
exps_print_ext(c, union_exps, 0, "");
@@ -3261,8 +3262,8 @@ sql_rel* _group_star_pattern(mvc *c, jgr
int *tmptbId = NULL;
int num_match_tbl = 0;
- int **ijgroup;
- int *nnodes_per_ijgroup;
+ int **ijgroup = NULL;
+ int *nnodes_per_ijgroup = NULL;
int nijgroup = 0;
#if HANDLING_EXCEPTION
@@ -3337,10 +3338,18 @@ sql_rel* _group_star_pattern(mvc *c, jgr
for (tblIdx = 0; tblIdx < num_match_tbl; tblIdx++){
tbl_m_rels[tblIdx] =
_group_star_pattern_for_single_table(c, jg, ijgroup, nijgroup,
nnodes_per_ijgroup, tmptbId[tblIdx], &(sp_proj_exps[tblIdx]),
&(sp_opt_proj_exps[tblIdx]),
&(contain_mv_col[tblIdx]));
+ //Check
+ _rel_print(c, tbl_m_rels[tblIdx]);
+
+ //_rel_print(c, tbl_m_rels[0]);
+
}
+
printf("Done grouping star pattern\n");
+ _rel_print(c, tbl_m_rels[0]);
+
if (num_match_tbl > 0){
rel_alltable = union_sp_from_all_matching_tbls(c,
num_match_tbl, contain_mv_col, tbl_m_rels, sp_proj_exps);
@@ -3385,7 +3394,7 @@ sql_rel* _group_star_pattern(mvc *c, jgr
free_inner_join_groups(ijgroup, nijgroup, nnodes_per_ijgroup);
free_sp_props(spprops);
- free(tbl_m_rels);
+ //free(tbl_m_rels);
}
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
@@ -1745,7 +1745,9 @@ rel_push_topn_down(int *changes, mvc *sq
if (rel->op == op_topn && topn_save_exps(rel->exps)) {
sql_rel *rp = NULL;
-
+
+ if (r && r->op == op_project && need_distinct(r))
+ return rel;
/* duplicate topn + [ project-order ] under union */
if (r)
rp = r->l;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list