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

Reply via email to