Changeset: a1f65a9531f8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a1f65a9531f8
Modified Files:
sql/server/rel_optimizer.c
Branch: default
Log Message:
make sure we handle partition elimination in recursive merge tables
diffs (35 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
@@ -32,6 +32,10 @@ typedef struct global_props {
typedef sql_rel *(*rewrite_fptr)(int *changes, mvc *sql, sql_rel *rel);
typedef int (*find_prop_fptr)(mvc *sql, sql_rel *rel);
+static sql_rel * rewrite_topdown(mvc *sql, sql_rel *rel, rewrite_fptr
rewriter, int *has_changes);
+static sql_rel * rewrite(mvc *sql, sql_rel *rel, rewrite_fptr rewriter, int
*has_changes) ;
+static sql_rel * rel_remove_empty_select(int *changes, mvc *sql, sql_rel *rel);
+
static sql_subfunc *find_func( mvc *sql, char *name, list *exps );
/* The important task of the relational optimizer is to optimize the
@@ -1035,8 +1039,6 @@ reorder_join(mvc *sql, sql_rel *rel)
return rel;
}
-static sql_rel * rel_remove_empty_select(int *changes, mvc *sql, sql_rel *rel);
-static sql_rel * rewrite(mvc *sql, sql_rel *rel, rewrite_fptr rewriter, int
*has_changes) ;
static sql_rel *
rel_join_order(mvc *sql, sql_rel *rel)
{
@@ -6860,7 +6862,11 @@ rel_merge_table_rewrite(int *changes, mv
nrel->exps = rel->exps;
rel_destroy(rel);
if (sel) {
+ int changes = 0;
sel->l = nrel;
+ sel = rewrite_topdown(sql, sel,
&rel_push_select_down_union, &changes);
+ if (changes)
+ sel = rewrite(sql, sel,
&rel_push_project_up, &changes);
return sel;
}
return nrel;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list