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