Changeset: 55d3b70db4d9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/55d3b70db4d9
Modified Files:
        gdk/gdk.h
        gdk/gdk_bbp.c
        sql/storage/bat/bat_logger.c
Branch: default
Log Message:

Remove columns for heap size and bat capacity from BBP.dir.
Good values for these can be derived.


diffs (213 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -758,8 +758,9 @@ typedef struct {
 #define GDKLIBRARY_MINMAX_POS  061042U /* first in Nov2019: no min/max 
position; no BBPinfo value */
 #define GDKLIBRARY_TAILN       061043U /* first in Jul2021: str offset heaps 
names don't take width into account */
 #define GDKLIBRARY_HASHASH     061044U /* first in Jul2021: hashash bit in 
string heaps */
+#define GDKLIBRARY_HSIZE       061045U /* first in Jan2022: heap "size" values 
*/
 /* if the version number is updated, also fix snapshot_bats() in bat_logger.c 
*/
-#define GDKLIBRARY             061045U /* first after Jul2021 */
+#define GDKLIBRARY             061046U /* first after Jan2022 */
 
 typedef struct BAT {
        /* static bat properties */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -443,6 +443,8 @@ heapinit(BAT *b, const char *buf,
        (void) bbpversion;      /* could be used to implement compatibility */
 
        minpos = maxpos = (uint64_t) oid_nil; /* for GDKLIBRARY_MINMAX_POS case 
*/
+       size = 0;                             /* for GDKLIBRARY_HSIZE case */
+       storage = STORE_INVALID;              /* for GDKLIBRARY_HSIZE case */
        if (bbpversion <= GDKLIBRARY_MINMAX_POS ?
            sscanf(buf,
                   " %10s %" SCNu16 " %" SCNu16 " %" SCNu16 " %" SCNu64
@@ -453,6 +455,7 @@ heapinit(BAT *b, const char *buf,
                   &nokey1, &nosorted, &norevsorted, &base,
                   &free, &size, &storage,
                   &n) < 12 :
+           bbpversion <= GDKLIBRARY_HSIZE ?
            sscanf(buf,
                   " %10s %" SCNu16 " %" SCNu16 " %" SCNu16 " %" SCNu64
                   " %" SCNu64 " %" SCNu64 " %" SCNu64 " %" SCNu64
@@ -461,7 +464,16 @@ heapinit(BAT *b, const char *buf,
                   type, &width, &var, &properties, &nokey0,
                   &nokey1, &nosorted, &norevsorted, &base,
                   &free, &size, &storage, &minpos, &maxpos,
-                  &n) < 14) {
+                  &n) < 14 :
+           sscanf(buf,
+                  " %10s %" SCNu16 " %" SCNu16 " %" SCNu16 " %" SCNu64
+                  " %" SCNu64 " %" SCNu64 " %" SCNu64 " %" SCNu64
+                  " %" SCNu64 " %" SCNu64 " %" SCNu64
+                  "%n",
+                  type, &width, &var, &properties, &nokey0,
+                  &nokey1, &nosorted, &norevsorted, &base,
+                  &free, &minpos, &maxpos,
+                  &n) < 12) {
                TRC_CRITICAL(GDK, "invalid format for BBP.dir on line %d", 
lineno);
                return -1;
        }
@@ -542,17 +554,26 @@ heapinit(BAT *b, const char *buf,
 }
 
 static int
-vheapinit(BAT *b, const char *buf, bat bid, const char *filename, int lineno)
+vheapinit(BAT *b, const char *buf, bat bid, unsigned bbpversion, const char 
*filename, int lineno)
 {
        int n = 0;
        uint64_t free, size;
        uint16_t storage;
 
+       (void) bbpversion;      /* could be used to implement compatibility */
+
+       size = 0;                             /* for GDKLIBRARY_HSIZE case */
+       storage = STORE_INVALID;              /* for GDKLIBRARY_HSIZE case */
        if (b->tvarsized && b->ttype != TYPE_void) {
-               if (sscanf(buf,
+               if (bbpversion <= GDKLIBRARY_HSIZE ?
+                   sscanf(buf,
                           " %" SCNu64 " %" SCNu64 " %" SCNu16
                           "%n",
-                          &free, &size, &storage, &n) < 3) {
+                          &free, &size, &storage, &n) < 3 :
+                   sscanf(buf,
+                          " %" SCNu64
+                          "%n",
+                          &free, &n) < 1) {
                        TRC_CRITICAL(GDK, "invalid format for BBP.dir on line 
%d", lineno);
                        return -1;
                }
@@ -611,7 +632,7 @@ BBPreadEntries(FILE *fp, unsigned bbpver
                int nread, n;
                char *s, *options = NULL;
                char logical[1024];
-               uint64_t count, capacity, base = 0;
+               uint64_t count, capacity = 0, base = 0;
 #ifdef GDKLIBRARY_HASHASH
                int Thashash;
 #endif
@@ -627,14 +648,21 @@ BBPreadEntries(FILE *fp, unsigned bbpver
                        *s = 0;
                }
 
-               if (sscanf(buf,
+               if (bbpversion <= GDKLIBRARY_HSIZE ?
+                   sscanf(buf,
                           "%" SCNu64 " %" SCNu16 " %128s %19s %u %" SCNu64
                           " %" SCNu64 " %" SCNu64
                           "%n",
                           &batid, &status, headname, filename,
-                          &properties,
-                          &count, &capacity, &base,
-                          &nread) < 8) {
+                          &properties, &count, &capacity, &base,
+                          &nread) < 8 :
+                   sscanf(buf,
+                          "%" SCNu64 " %" SCNu16 " %128s %19s %u %" SCNu64
+                          " %" SCNu64
+                          "%n",
+                          &batid, &status, headname, filename,
+                          &properties, &count, &base,
+                          &nread) < 7) {
                        TRC_CRITICAL(GDK, "invalid format for BBP.dir on line 
%d", lineno);
                        goto bailout;
                }
@@ -713,7 +741,7 @@ BBPreadEntries(FILE *fp, unsigned bbpver
                        goto bailout;
                }
                nread += n;
-               n = vheapinit(bn, buf + nread, bid, filename, lineno);
+               n = vheapinit(bn, buf + nread, bid, bbpversion, filename, 
lineno);
                if (n < 0) {
                        BATdestroy(bn);
                        goto bailout;
@@ -932,6 +960,7 @@ BBPheader(FILE *fp, int *lineno, bat *bb
                return 0;
        }
        if (bbpversion != GDKLIBRARY &&
+           bbpversion != GDKLIBRARY_HSIZE &&
            bbpversion != GDKLIBRARY_HASHASH &&
            bbpversion != GDKLIBRARY_TAILN &&
            bbpversion != GDKLIBRARY_MINMAX_POS) {
@@ -1842,7 +1871,7 @@ heap_entry(FILE *fp, BATiter *bi, BUN si
        }
 
        return fprintf(fp, " %s %d %d %d " BUNFMT " " BUNFMT " " BUNFMT " "
-                      BUNFMT " " OIDFMT " %zu %zu %d %" PRIu64" %" PRIu64,
+                      BUNFMT " " OIDFMT " %zu %" PRIu64" %" PRIu64,
                       bi->type >= 0 ? BATatoms[bi->type].name : 
ATOMunknown_name(bi->type),
                       bi->width,
                       b->tvarsized,
@@ -1858,8 +1887,6 @@ heap_entry(FILE *fp, BATiter *bi, BUN si
                       b->tnorevsorted >= size ? 0 : b->tnorevsorted,
                       b->tseqbase,
                       free,
-                      bi->h->size,
-                      0,
                       bi->minpos < b->hseqbase + size ? (uint64_t) bi->minpos 
: (uint64_t) oid_nil,
                       bi->maxpos < b->hseqbase + size ? (uint64_t) bi->maxpos 
: (uint64_t) oid_nil);
 }
@@ -1884,7 +1911,7 @@ vheap_entry(FILE *fp, BATiter *bi, BUN s
                        GDKfree(fname);
                }
        }
-       return fprintf(fp, " %zu %zu %d", bi->vhfree, bi->vh->size, 0);
+       return fprintf(fp, " %zu", bi->vhfree);
 }
 
 static gdk_return
@@ -1907,7 +1934,7 @@ new_bbpentry(FILE *fp, bat i, BUN size, 
 
        if (size > bi->count)
                size = bi->count;
-       if (fprintf(fp, "%d %u %s %s %d " BUNFMT " " BUNFMT " " OIDFMT,
+       if (fprintf(fp, "%d %u %s %s %d " BUNFMT " " OIDFMT,
                    /* BAT info */
                    (int) i,
                    BBP_status(i) & BBPPERSISTENT,
@@ -1915,7 +1942,6 @@ new_bbpentry(FILE *fp, bat i, BUN size, 
                    BBP_physical(i),
                    bi->b->batRestricted << 1,
                    size,
-                   bi->b->batCapacity,
                    bi->b->hseqbase) < 0 ||
            heap_entry(fp, bi, size) < 0 ||
            vheap_entry(fp, bi, size) < 0 ||
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -3354,7 +3354,7 @@ snapshot_bats(stream *plan, const char *
                GDKerror("Invalid first line of %s", bbpdir);
                goto end;
        }
-       if (gdk_version != 061045U) {
+       if (gdk_version != 061046U) {
                // If this version number has changed, the structure of BBP.dir
                // may have changed. Update this whole function to take this
                // into account.
@@ -3392,16 +3392,16 @@ snapshot_bats(stream *plan, const char *
                // were actually present.
                int scanned = sscanf(line,
                                // Taken from the sscanf in BBPreadEntries() in 
gdk_bbp.c.
-                               // 8 fields, we need field 1 (batid) and field 
4 (filename)
-                               "%" SCNu64 " %*s %*s %19s %*s %*s %*s %*s"
+                               // 7 fields, we need field 1 (batid) and field 
4 (filename)
+                               "%" SCNu64 " %*s %*s %19s %*s %*s %*s"
 
                                // Taken from the sscanf in heapinit() in 
gdk_bbp.c.
-                               // 14 fields, we need fields 1 (type), 2 
(width), 10 (free)
-                               " %10s %" SCNu16 " %*s %*s %*s %*s %*s %*s %*s 
%" SCNu64 " %*s %*s %*s %*s"
+                               // 12 fields, we need fields 1 (type), 2 
(width), 10 (free)
+                               " %10s %" SCNu16 " %*s %*s %*s %*s %*s %*s %*s 
%" SCNu64 " %*s %*s"
 
                                // Taken from the sscanf in vheapinit() in 
gdk_bbp.c.
-                               // 3 fields, we need field 1 (free).
-                               "%" SCNu64 " %*s ^*s"
+                               // 1 field, we need field 1 (free).
+                               "%" SCNu64
                                ,
                                &batid, filename,
                                type, &width, &tail_free,
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to