Changeset: eb798199ad44 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eb798199ad44
Modified Files:
gdk/gdk_imprints.c
gdk/gdk_private.h
gdk/gdk_select.c
Branch: Oct2014
Log Message:
Min and max statistics in stats are offsets, i.e. BUNs.
diffs (105 lines):
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -495,14 +495,14 @@ do {
\
} while (0)
static int
-imprints_create(BAT *b, void *inbins, void *stats, bte bits,
+imprints_create(BAT *b, void *inbins, BUN *stats, bte bits,
void *imps, BUN *impcnt, cchdc_t *dict, BUN *dictcnt)
{
BUN i;
BUN dcnt, icnt, new;
- oid *min_bins = (oid *) stats;
- oid *max_bins = min_bins + 64;
- BUN *cnt_bins = (BUN *)(max_bins + 64);
+ BUN *min_bins = stats;
+ BUN *max_bins = min_bins + 64;
+ BUN *cnt_bins = max_bins + 64;
bte bin = 0;
dcnt = icnt = 0;
for (i = 0; i < 64; i++)
@@ -660,9 +660,8 @@ BATimprints(BAT *b)
imprints->impcnt = (BUN) hdata[1];
imprints->dictcnt = (BUN) hdata[2];
imprints->bins = imprints->imprints->base + 4 *
SIZEOF_SIZE_T;
- imprints->stats = (char *) imprints->bins + 64
* b->T->width;
- imprints->imps = (char *) imprints->stats + 64
* 2 * SIZEOF_OID
- +
64 * SIZEOF_BUN;
+ imprints->stats = (BUN *) ((char *)
imprints->bins + 64 * b->T->width);
+ imprints->imps = (void *) (imprints->stats + 64
* 3);
imprints->dict = (void *) ((uintptr_t) ((char
*) imprints->imps + pages * (imprints->bits / 8) + sizeof(uint64_t)) &
~(sizeof(uint64_t) - 1));
b->T->imprints = imprints;
close(fd);
@@ -744,9 +743,8 @@ BATimprints(BAT *b)
return NULL;
}
imprints->bins = imprints->imprints->base + 4 * SIZEOF_SIZE_T;
- imprints->stats = (char *) imprints->bins + 64 * b->T->width;
- imprints->imps = (char *) imprints->stats + 64 * 2 * SIZEOF_OID
+
- 64 * SIZEOF_BUN;
+ imprints->stats = (BUN *) ((char *) imprints->bins + 64 *
b->T->width);
+ imprints->imps = (void *) (imprints->stats + 64 * 3);
imprints->dict = (void *) ((uintptr_t) ((char *) imprints->imps
+ pages * (imprints->bits / 8) + sizeof(uint64_t)) & ~(sizeof(uint64_t) - 1));
switch (ATOMstorage(b->T->type)) {
@@ -959,7 +957,7 @@ IMPSprint(BAT *b)
cchdc_t *d;
char s[65]; /* max number of bits + 1 */
BUN icnt, dcnt, l, pages;
- oid *min_bins, *max_bins;
+ BUN *min_bins, *max_bins;
BUN *cnt_bins;
bte j;
int i;
@@ -968,21 +966,21 @@ IMPSprint(BAT *b)
return;
imprints = b->T->imprints;
d = (cchdc_t *) imprints->dict;
- min_bins = (oid *) imprints->stats;
+ min_bins = imprints->stats;
max_bins = min_bins + 64;
- cnt_bins = (BUN *)(max_bins + 64);
+ cnt_bins = max_bins + 64;
fprintf(stderr,
"bits = %d, impcnt = " BUNFMT ", dictcnt = " BUNFMT "\n",
imprints->bits, imprints->impcnt, imprints->dictcnt);
fprintf(stderr,"MIN = ");
for (i = 0; i < imprints->bits; i++) {
- fprintf(stderr, "[ " OIDFMT " ] ", min_bins[i]);
+ fprintf(stderr, "[ " BUNFMT " ] ", min_bins[i]);
}
fprintf(stderr,"\n");
fprintf(stderr,"MAX = ");
for (i = 0; i < imprints->bits; i++) {
- fprintf(stderr, "[ " OIDFMT " ] ", max_bins[i]);
+ fprintf(stderr, "[ " BUNFMT " ] ", max_bins[i]);
}
fprintf(stderr,"\n");
fprintf(stderr,"COUNT = ");
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -217,7 +217,7 @@ struct Imprints {
bte bits; /* how many bits in imprints */
Heap *imprints;
void *bins; /* pointer into imprints heap (bins borders) */
- void *stats; /* pointer into imprints heap (stats per bin) */
+ BUN *stats; /* pointer into imprints heap (stats per bin) */
void *imps; /* pointer into imprints heap (bit vectors) */
void *dict; /* pointer into imprints heap (dictionary) */
BUN impcnt; /* counter for imprints */
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -344,7 +344,7 @@ do {
\
#define checkMINMAX(B) \
do { \
int ii; \
- BUN *imp_cnt = (BUN *) (((oid *)imprints->stats)+128); \
+ BUN *imp_cnt = imprints->stats + 128; \
imp_min = imp_max = nil; \
for (ii = 0; ii < B; ii++) { \
if ((imp_min == nil) && (imp_cnt[ii])) { \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list