Changeset: b82dc476a040 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b82dc476a040
Modified Files:
        gdk/gdk_bbp.c
        gdk/gdk_strimps.c
Branch: string_imprints
Log Message:

Fix strimp persistence


diffs (40 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -4038,6 +4038,11 @@ BBPdiskscan(const char *parent, size_t b
 #else
                                delete = true;
 #endif
+                       } else if (strncmp(p + 1, "tstrimps", 8) == 0) {
+                               BAT *b = getdesc(bid);
+                               delete = b == NULL;
+                               if (!delete)
+                                       b->tstrimps = (Strimps *)1;
                        } else if (strncmp(p + 1, "new", 3) != 0) {
                                ok = false;
                        }
diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -78,7 +78,7 @@
  * first 8 bytes of the heap.
  */
 #define NPAIRS(d) (((d) & (0xff << 8)) >> 8)
-#define HSIZE(d) (((d) & (0xffff << 16)) >> 16)
+#define HSIZE(d) (((d) & (0xffff << 15)) >> 15)
 
 #undef UTF8STRINGS             /* Not using utf8 for now */
 #ifdef UTF8STRINGS
@@ -426,9 +426,9 @@ BATcheckstrimps(BAT *b)
                                                                      /* 
bitmasks */
                                                                      
BATcount(b)*(npairs/8))
                                            && HEAPload(&hp->strimps, nme, 
"tstrimps", false) == GDK_SUCCEED) {
-                                               hp->sizes_base = (uint8_t *)hp 
+ 8;         /* sizes start just after the descriptor */
-                                               hp->pairs_base = hp->sizes_base 
+ npairs;   /* pairs start after the offsets */
-                                               hp->strimps_base = 
hp->sizes_base + hsize;  /* bitmasks start after the pairs */
+                                               hp->sizes_base = (uint8_t 
*)hp->strimps.base + 8; /* sizes just after the descriptor */
+                                               hp->pairs_base = hp->sizes_base 
+ npairs;         /* pairs just after the offsets */
+                                               hp->strimps_base = 
hp->sizes_base + hsize;        /* bitmasks just after the pairs */
 
                                                close(fd);
                                                hp->strimps.parentid = 
b->batCacheid;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to