Changeset: 936accbceaa0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=936accbceaa0
Modified Files:
sql/server/rel_optimizer.c
Branch: Apr2012
Log Message:
swap select expression to math the order of the relations
diffs (31 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
@@ -4686,11 +4686,14 @@ rel_use_index(int *changes, mvc *sql, sq
if (is_select(rel->op) || is_join(rel->op)) {
list *exps = NULL;
sql_idx *i = find_index(sql->sa, rel, rel, &exps);
+ int left = 1;
if (!i && is_join(rel->op))
i = find_index(sql->sa, rel, rel->l, &exps);
- if (!i && is_join(rel->op))
+ if (!i && is_join(rel->op)) {
+ left = 0;
i = find_index(sql->sa, rel, rel->r, &exps);
+ }
if (i) {
prop *p;
@@ -4700,6 +4703,11 @@ rel_use_index(int *changes, mvc *sql, sq
for( n = exps->h; n; n = n->next) {
sql_exp *e = n->data;
+ /* swapped ? */
+ if (is_join(rel->op) &&
+ ((left && !rel_find_exp(rel->l, e->l))
||
+ (!left && !rel_find_exp(rel->r,
e->l))))
+ n->data = e = exp_compare(sql->sa,
e->r, e->l, cmp_equal);
p = find_prop(e->p, PROP_HASHCOL);
if (!p)
e->p = p = prop_create(sql->sa,
PROP_HASHCOL, e->p);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list