Changeset: 0c702e368487 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0c702e368487
Modified Files:
        gdk/gdk.h
        monetdb5/modules/kernel/colstr.c
Branch: headless
Log Message:

Mservers starts... and crashes
The last typos out colstr.c. The gdk.h definition of COLset_str
needs further attention, but mserver5 can start and will crash
in BUNfnd as that code has not been colified.


diffs (86 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2955,7 +2955,33 @@
 
 #define COLforloop(b, o) for( o = 0; o < b->count; o++)
 #define COLget_str(b, o)       (str)((char *) (b)->vheap->base + ((size_t) 
VarHeapValRaw(b,o,b->width)  << GDK_VARSHIFT))
-#define COLset_str(b, o, v) /* TODO */
+#define COLset_str(b, o, v) \
+       do {                                                            \
+               var_t _d;                                               \
+               if (strPut((b)->vheap, &_d, (ptr)(v)) == 0)                     
\
+                       break; /* goto bunins_failed; */                        
        \
+               if ((b)->width < SIZEOF_VAR_T &&                        \
+                   ((b)->width <= 2 ? _d - GDK_VAROFFSET : _d) >= ((size_t) 1 
<< (8 * (b)->width))) { \
+                       /* doesn't fit in current heap, upgrade it */   \
+                       COLaccessBegin(b, USE_HEAP, MMAP_SEQUENTIAL);   \
+                       GDKupgradevarheap((b), _d, (FALSE));            \
+                       COLaccessEnd(b, USE_HEAP, MMAP_SEQUENTIAL);     \
+               }                                                       \
+               switch ((b)->width) {                                   \
+               case 1:                                                 \
+                       ((unsigned char *) COLbase(b))[o] = (unsigned char) (_d 
- GDK_VAROFFSET); \
+                       break;                                          \
+               case 2:                                                 \
+                       ((unsigned short *) COLbase(b))[o] = (unsigned short) 
(_d - GDK_VAROFFSET); \
+                       break;                                          \
+               case 4:                                                 \
+                       ((unsigned int *) COLbase(b))[o] = (unsigned int) (_d 
); \
+                       break;                                          \
+               case 8:                                                 \
+                       ((var_t *) COLbase(b))[o] = _d; \
+                       break;                                          \
+               }                                                       \
+       } while (0)
 
 /*
  * batloop where the current element can be deleted/updated
diff --git a/monetdb5/modules/kernel/colstr.c b/monetdb5/modules/kernel/colstr.c
--- a/monetdb5/modules/kernel/colstr.c
+++ b/monetdb5/modules/kernel/colstr.c
@@ -600,7 +600,7 @@
        COLforloop(bl,o){
                tl = COLget_str(bl,o);
                strChrAt(vp, tl, r);
-               COLset_str(bn,o,v);
+               COLset_str(bn,o,vp);
        }
        COLaccessEnd(bl, USE_HEAP, MMAP_SEQUENTIAL);
        COLsetcount(bn, COLcount(bl));
@@ -629,7 +629,7 @@
        COLforloop(bl,o){
                tl = COLget_str(bl,o);
                strChrAt(vp, tl, cst);
-               COLset_str(bn,o,v);
+               COLset_str(bn,o,vp);
        }
        COLaccessEnd(bl, USE_HEAP, MMAP_SEQUENTIAL);
        COLsetcount(bn, COLcount(bl));
@@ -668,7 +668,7 @@
                tl = COLget_str(bl,o);
                tr = COLget_str(br,o);
                STRPrefix(vp, &tl, &tr);
-               COLset_str(bn,o,v);
+               COLset_str(bn,o,vp);
        }
        COLaccessEnd(bl, USE_HEAP, MMAP_SEQUENTIAL);
        COLaccessEnd(br, USE_HEAP, MMAP_SEQUENTIAL);
@@ -700,7 +700,7 @@
        COLforloop(bl, o) {
                tr =  COLget_str(bl,o);
                STRPrefix(vp, &tr, cst);
-               COLset_str(bn,o,v);
+               COLset_str(bn,o,vp);
        }
        COLaccessEnd(bl, USE_HEAP, MMAP_SEQUENTIAL);
        bn->nonil = 0;
@@ -730,7 +730,7 @@
        COLforloop(br,o){
                tr = COLget_str(br,o);
                STRPrefix(vp, cst, &tr);
-               COLset_str(bn,o,v);
+               COLset_str(bn,o,vp);
        }
        COLaccessEnd(br, USE_HEAP, MMAP_SEQUENTIAL);
        bn->nonil = 0;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to