Changeset: ff9acdc6d2d6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ff9acdc6d2d6 Modified Files: gdk/gdk_group.c gdk/gdk_unique.c Branch: linear-hashing Log Message:
Use nunique property where useful. diffs (47 lines): diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c --- a/gdk/gdk_group.c +++ b/gdk/gdk_group.c @@ -737,7 +737,10 @@ BATgroup_internal(BAT **groups, BAT **ex if (gn == NULL) goto error; ngrps = (oid *) Tloc(gn, 0); - maxgrps = cnt / 10; + if ((prop = BATgetprop(b, GDK_NUNIQUE)) != NULL) + maxgrps = prop->v.val.oval; + else + maxgrps = cnt / 10; if (!is_oid_nil(maxgrp) && maxgrps < maxgrp) maxgrps += maxgrp; if (e && maxgrps < BATcount(e)) @@ -747,7 +750,7 @@ BATgroup_internal(BAT **groups, BAT **ex if (maxgrps < GROUPBATINCR) maxgrps = GROUPBATINCR; if (b->twidth <= 2) - maxgrps = (BUN) 1 << (8 << (b->twidth == 2)); + maxgrps = (BUN) 1 << (8 * b->twidth); if (extents) { en = COLnew(0, TYPE_oid, maxgrps, TRANSIENT); if (en == NULL) diff --git a/gdk/gdk_unique.c b/gdk/gdk_unique.c --- a/gdk/gdk_unique.c +++ b/gdk/gdk_unique.c @@ -39,6 +39,7 @@ BATunique(BAT *b, BAT *s) int (*cmp)(const void *, const void *); bat parent; struct canditer ci; + PROPrec *prop; BATcheck(b, "BATunique", NULL); cnt = canditer_init(&ci, b, s); @@ -69,7 +70,10 @@ BATunique(BAT *b, BAT *s) assert(b->ttype != TYPE_void); - bn = COLnew(0, TYPE_oid, 1024, TRANSIENT); + if (s == NULL && (prop = BATgetprop(b, GDK_NUNIQUE)) != NULL) + bn = COLnew(0, TYPE_oid, prop->v.val.oval, TRANSIENT); + else + bn = COLnew(0, TYPE_oid, 1024, TRANSIENT); if (bn == NULL) return NULL; vals = Tloc(b, 0); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list