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

Reply via email to