Changeset: 03bb8a7613ce for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03bb8a7613ce
Modified Files:
        sql/backends/monet5/rel_bin.c
Branch: Jun2020
Log Message:

use mkey/xor for intersect and except


diffs (107 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2105,7 +2105,7 @@ join_hash_key( backend *be, list *l )
 }
 
 static stmt *
-releqjoin( backend *be, list *l1, list *l2, list *exps, int used_hash, 
comp_type cmp_op, int need_left, int is_semantics )
+releqjoin( backend *be, list *l1, list *l2, list *exps, int used_hash, int 
need_left, int is_semantics )
 {
        mvc *sql = be->mvc;
        node *n1 = l1->h, *n2 = l2->h, *n3 = NULL;
@@ -2121,7 +2121,7 @@ releqjoin( backend *be, list *l1, list *
                        e = n3->data;
                        is_semantics = is_semantics(e);
                }
-               r =  stmt_join(be, l, r, 0, cmp_op, need_left, is_semantics, 
false);
+               r =  stmt_join(be, l, r, 0, cmp_equal, need_left, is_semantics, 
false);
                return r;
        }
        if (used_hash) {
@@ -2130,11 +2130,11 @@ releqjoin( backend *be, list *l1, list *
                n1 = n1->next;
                n2 = n2->next;
                n3 = n3?n3->next:NULL;
-               res = stmt_join(be, l, r, 0, cmp_op, need_left, 1, false);
+               res = stmt_join(be, l, r, 0, cmp_equal, need_left, 1, false);
        } else { /* need hash */
                l = join_hash_key(be, l1);
                r = join_hash_key(be, l2);
-               res = stmt_join(be, l, r, 0, cmp_op, need_left, 1, false);
+               res = stmt_join(be, l, r, 0, cmp_equal, need_left, 1, false);
        }
        l = stmt_result(be, res, 0);
        r = stmt_result(be, res, 1);
@@ -2357,7 +2357,7 @@ rel2bin_join(backend *be, sql_rel *rel, 
                                list_append(exps, e);
                        }
                        if (list_length(lje) > 1) {
-                               join = releqjoin(be, lje, rje, exps, used_hash, 
cmp_equal, need_left, 0);
+                               join = releqjoin(be, lje, rje, exps, used_hash, 
need_left, 0);
                        } else if (!join || need_left) {
                                sql_exp *e = exps->h->data;
                                join = stmt_join(be, lje->h->data, 
rje->h->data, 0, cmp_equal, need_left, is_semantics(e), false);
@@ -2680,7 +2680,7 @@ rel2bin_semijoin(backend *be, sql_rel *r
                                }
                        }
                        if (list_length(lje) > 1) {
-                               join = releqjoin(be, lje, rje, exps, 0 /* no 
hash used */, cmp_equal, 0, 0);
+                               join = releqjoin(be, lje, rje, exps, 0 /* use 
hash */, 0, 0);
                        } else if (!join && list_length(lje) == 
list_length(rje) && list_length(lje)) {
                                sql_exp *e = exps->h->data;
                                join = stmt_join(be, lje->h->data, 
rje->h->data, 0, cmp_equal, 0, is_semantics(e), false);
@@ -2957,7 +2957,7 @@ rel2bin_except(backend *be, sql_rel *rel
                list_append(lje, l);
                list_append(rje, r);
        }
-       s = releqjoin(be, lje, rje, NULL, 1 /* cannot use hash */, cmp_equal, 
0, 1 /*is_semantics*/);
+       s = releqjoin(be, lje, rje, NULL, 0 /* use hash */, 0, 1 
/*is_semantics*/);
        lm = stmt_result(be, s, 0);
        rm = stmt_result(be, s, 1);
 
@@ -3068,7 +3068,7 @@ rel2bin_inter(backend *be, sql_rel *rel,
                list_append(lje, l);
                list_append(rje, r);
        }
-       s = releqjoin(be, lje, rje, NULL, 1 /* cannot use hash */, cmp_equal, 
0, 1 /* is_semantics */);
+       s = releqjoin(be, lje, rje, NULL, 0 /* use hash */, 0, 1 /* 
is_semantics */);
        lm = stmt_result(be, s, 0);
        rm = stmt_result(be, s, 1);
 
@@ -3778,7 +3778,7 @@ insert_check_ukey(backend *be, list *ins
                                list_append(lje, col);
                                list_append(rje, cs);
                        }
-                       s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 
cmp_equal, 0, 0);
+                       s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 0, 
0);
                        s = stmt_result(be, s, 0);
                }
                s = stmt_binop(be, stmt_aggr(be, s, NULL, NULL, cnt, 1, 0, 1), 
stmt_atom_lng(be, 0), ne);
@@ -4231,7 +4231,7 @@ update_check_ukey(backend *be, stmt **up
                                list_append(lje, stmt_col(be, c->c, nu_tids, 
nu_tids->partition));
                                list_append(rje, upd);
                        }
-                       s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 
cmp_equal, 0, 0);
+                       s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 0, 
0);
                        s = stmt_result(be, s, 0);
                        s = stmt_binop(be, stmt_aggr(be, s, NULL, NULL, cnt, 1, 
0, 1), stmt_atom_lng(be, 0), ne);
                }
@@ -4525,7 +4525,7 @@ join_updated_pkey(backend *be, sql_key *
                list_append(lje, upd);
                list_append(rje, col);
        }
-       s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, cmp_equal, 0, 0);
+       s = releqjoin(be, lje, rje, NULL, 1 /* hash used */, 0, 0);
        s = stmt_result(be, s, 0);
 
        /* add missing nulls */
@@ -4791,7 +4791,7 @@ join_idx_update(backend *be, sql_idx * i
                list_append(lje, check_types(be, &rc->c->type, upd, 
type_equal));
                list_append(rje, stmt_col(be, rc->c, ptids, ptids->partition));
        }
-       s = releqjoin(be, lje, rje, NULL, 0 /* use hash */, cmp_equal, 0, 0);
+       s = releqjoin(be, lje, rje, NULL, 0 /* use hash */, 0, 0);
        l = stmt_result(be, s, 0);
        r = stmt_result(be, s, 1);
        r = stmt_project(be, r, ptids);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to