Changeset: 6863d2830abc for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6863d2830abc Modified Files: gdk/ChangeLog gdk/gdk.h gdk/gdk_search.c monetdb5/modules/kernel/algebra.c Branch: default Log Message:
Cleanup: BUNtvar and BUNhvar macros no longer work for TYPE_void columns. diffs (94 lines): diff --git a/gdk/ChangeLog b/gdk/ChangeLog --- a/gdk/ChangeLog +++ b/gdk/ChangeLog @@ -1,6 +1,9 @@ # ChangeLog file for MonetDB # This file is updated with Maddlog +* Wed Feb 4 2015 Sjoerd Mullender <[email protected]> +- BUNtvar and BUNhvar macros no longer work for TYPE_void columns. + * Mon Feb 2 2015 Sjoerd Mullender <[email protected]> - Changed interfaces of a lot of GDK-level functions. When they modify a BAT, don't return the same BAT or NULL, but instead return GDK_SUCCEED diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1411,12 +1411,12 @@ typedef var_t stridx_t; /* TODO: should #define BUNhloc(bi,p) Hloc((bi).b,p) #define BUNtloc(bi,p) Tloc((bi).b,p) -#define BUNhpos(bi,p) (Hpos(&(bi),p)) -#define BUNtpos(bi,p) (Tpos(&(bi),p)) -#define BUNhvar(bi,p) ((bi).b->htype?Hbase((bi).b)+BUNhvaroff(bi,p):BUNhpos(bi,p)) -#define BUNtvar(bi,p) ((bi).b->ttype?Tbase((bi).b)+BUNtvaroff(bi,p):BUNtpos(bi,p)) -#define BUNhead(bi,p) ((bi).b->hvarsized?BUNhvar(bi,p):BUNhloc(bi,p)) -#define BUNtail(bi,p) ((bi).b->tvarsized?BUNtvar(bi,p):BUNtloc(bi,p)) +#define BUNhpos(bi,p) Hpos(&(bi),p) +#define BUNtpos(bi,p) Tpos(&(bi),p) +#define BUNhvar(bi,p) (assert((bi).b->htype && (bi).b->hvarsized), Hbase((bi).b)+BUNhvaroff(bi,p)) +#define BUNtvar(bi,p) (assert((bi).b->ttype && (bi).b->tvarsized), Tbase((bi).b)+BUNtvaroff(bi,p)) +#define BUNhead(bi,p) ((bi).b->htype?(bi).b->hvarsized?BUNhvar(bi,p):BUNhloc(bi,p):BUNhpos(bi,p)) +#define BUNtail(bi,p) ((bi).b->ttype?(bi).b->tvarsized?BUNtvar(bi,p):BUNtloc(bi,p):BUNtpos(bi,p)) static inline BATiter bat_iterator(BAT *b) diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c --- a/gdk/gdk_search.c +++ b/gdk/gdk_search.c @@ -602,7 +602,20 @@ SORTfndwhich(BAT *b, const void *v, enum cur = (BUN) (*(const oid *) v - b->tseqbase) + lo; return cur + (which == FIND_LAST); } - + if (b->ttype == TYPE_void) { + assert(b->tseqbase == oid_nil); + switch (which) { + case FIND_FIRST: + if (*(const oid *) v == oid_nil) + return lo; + case FIND_LAST: + return hi; + default: + if (lo < hi && *(const oid *) v == oid_nil) + return lo; + return BUN_NONE; + } + } cmp = 1; cur = BUN_NONE; bi = bat_iterator(b); diff --git a/monetdb5/modules/kernel/algebra.c b/monetdb5/modules/kernel/algebra.c --- a/monetdb5/modules/kernel/algebra.c +++ b/monetdb5/modules/kernel/algebra.c @@ -171,22 +171,14 @@ CMDlike(BAT **ret, BAT *b, const char *s for (p = t; *p; p++, yy++) *p = tolower(*p); - if (b->hvarsized) { - BATloop(b, u, v) - if (like(BUNtvar(bi, u), t, yy) && - BUNfastins(c, BUNhvar(bi, u), BUNtvar(bi, u)) == GDK_FAIL) { - BBPreclaim(c); - GDKfree(t); - return GDK_FAIL; - } - } else { - BATloop(b, u, v) - if (like(BUNtvar(bi, u), t, yy) && - BUNfastins(c, BUNhloc(bi, u), BUNtvar(bi, u)) == GDK_FAIL) { - BBPreclaim(c); - GDKfree(t); - return GDK_FAIL; - } + BATloop(b, u, v) { + p = BUNtvar(bi, u); + if (like(p, t, yy) && + BUNfastins(c, BUNhead(bi, u), p) == GDK_FAIL) { + BBPreclaim(c); + GDKfree(t); + return GDK_FAIL; + } } c->hsorted = BAThordered(b); c->hrevsorted = BAThrevordered(b); _______________________________________________ checkin-list mailing list [email protected] https://www.monetdb.org/mailman/listinfo/checkin-list
