Changeset: 86a8ec8d5392 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=86a8ec8d5392 Modified Files: gdk/gdk_orderidx.c Branch: leftmart Log Message:
different take on setting the bit for n-merge order idx. diffs (50 lines): diff --git a/gdk/gdk_orderidx.c b/gdk/gdk_orderidx.c --- a/gdk/gdk_orderidx.c +++ b/gdk/gdk_orderidx.c @@ -322,12 +322,24 @@ BATorderidx(BAT *b, int stable) HEAPIFY(i); \ } \ /* merge */ \ + *mv++ = *(p[0])++; \ + if (p[0] < q[0]) { \ + minhp[0] = v[*p[0] - b->hseqbase]; \ + HEAPIFY(0); \ + } else { \ + swap(minhp[0], minhp[n_ar-1], t); \ + swap(p[0], p[n_ar-1], t_oid); \ + swap(q[0], q[n_ar-1], t_oid); \ + n_ar--; \ + HEAPIFY(0); \ + } \ while (n_ar > 1) { \ *mv = *(p[0])++; \ + if (v[*mv - b->hseqbase] != v[*(mv-1) - b->hseqbase]) { \ + *(mv-1) |= BUN_MSK; \ + } \ + mv++; \ if (p[0] < q[0]) { \ - if (v[*mv - b->hseqbase] != v[*p[0] - b->hseqbase]) { \ - *mv |= BUN_MSK; \ - } \ minhp[0] = v[*p[0] - b->hseqbase]; \ HEAPIFY(0); \ } else { \ @@ -336,16 +348,12 @@ BATorderidx(BAT *b, int stable) swap(q[0], q[n_ar-1], t_oid); \ n_ar--; \ HEAPIFY(0); \ - if (v[*mv - b->hseqbase] != v[*p[0] - b->hseqbase]) { \ - *mv |= BUN_MSK; \ - } \ } \ - mv++; \ } \ while (p[0] < q[0]) { \ *mv = *(p[0])++; \ - if (p[0] < q[0] && v[*mv - b->hseqbase] != v[*p[0] - b->hseqbase]) { \ - *mv |= BUN_MSK; \ + if (v[*mv - b->hseqbase] != v[*(mv-1) - b->hseqbase]) { \ + *(mv-1) |= BUN_MSK; \ } \ mv++; \ } \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list