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