Changeset: f2e6d24a4f31 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f2e6d24a4f31
Modified Files:
gdk/gdk_align.c
gdk/gdk_relop.mx
Branch: default
Log Message:
Relax alignment requirements when creating view of multiple bats.
When creating a view consisting of the head of one bat and the tail of
another, we don't need to require that both have the same BUNfirst
value: by manipulating the base address of the two columns in the new
view we can still have them share the same BUNfirst value.
diffs (37 lines):
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -277,8 +277,10 @@ VIEWcreate_(BAT *h, BAT *t, int slice_vi
* data, though. */
*bn->U = *h->U;
*bn->H = *h->H;
- /* we need aligned bats */
- assert(h->U->first == t->U->first);
+ if (bn->U->first > 0) {
+ bn->H->heap.base += h->U->first * h->H->width;
+ bn->U->first = 0;
+ }
if (h->H == t->T) {
vc = 1;
tp = hp;
@@ -287,6 +289,8 @@ VIEWcreate_(BAT *h, BAT *t, int slice_vi
*bn->T = *t->T;
if (bn->U->capacity > t->U->capacity)
bn->U->capacity = t->U->capacity;
+ if (t->U->first > 0)
+ bn->T->heap.base += t->U->first * t->T->width;
}
if (hp)
diff --git a/gdk/gdk_relop.mx b/gdk/gdk_relop.mx
--- a/gdk/gdk_relop.mx
+++ b/gdk/gdk_relop.mx
@@ -1230,7 +1230,7 @@ batjoin(BAT *l, BAT *r, BUN estimate, bi
@:return_empty_join_result(l,r, BATjoin: |l|==0 or |r|==0 or
tail(l)==NIL or head(r)==NIL,0)@
}
if (BATtdense(l) && BAThdense(r) && l->tseqbase == r->hseqbase &&
- lcount == rcount && BUNfirst(l) == BUNfirst(r) &&
+ lcount == rcount &&
l->batRestricted == BAT_READ && r->batRestricted == BAT_READ)
return VIEWcreate(l, r);
/*
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list