Changeset: 2e159a218ef3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2e159a218ef3
Added Files:
clients/R/Tests/dbi.reqtests
clients/R/Tests/dplyr.reqtests
clients/R/Tests/survey.reqtests
Modified Files:
gdk/gdk_bat.c
gdk/gdk_bbp.c
gdk/gdk_select.c
Branch: default
Log Message:
Merge with Oct2014 branch.
diffs (184 lines):
diff --git a/clients/R/Tests/dbi.reqtests b/clients/R/Tests/dbi.reqtests
new file mode 100644
--- /dev/null
+++ b/clients/R/Tests/dbi.reqtests
@@ -0,0 +1,1 @@
+install
diff --git a/clients/R/Tests/dplyr.reqtests b/clients/R/Tests/dplyr.reqtests
new file mode 100644
--- /dev/null
+++ b/clients/R/Tests/dplyr.reqtests
@@ -0,0 +1,1 @@
+install
diff --git a/clients/R/Tests/survey.reqtests b/clients/R/Tests/survey.reqtests
new file mode 100644
--- /dev/null
+++ b/clients/R/Tests/survey.reqtests
@@ -0,0 +1,1 @@
+install
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -601,6 +601,8 @@ BATclear(BAT *b, int force)
else
b->batFirst = b->batInserted;
BATsetcount(b,0);
+ BATseqbase(b, 0);
+ BATseqbase(BATmirror(b), 0);
b->batDirty = TRUE;
BATsettrivprop(b);
return b;
@@ -2122,6 +2124,10 @@ BATsetcount(BAT *b, BUN cnt)
b->T->heap.free = tailsize(b, BUNfirst(b) + cnt);
if (b->H->type == TYPE_void && b->T->type == TYPE_void)
b->batCapacity = cnt;
+ if (cnt <= 1) {
+ b->hsorted = b->hrevsorted = BATatoms[b->htype].linear != 0;
+ b->tsorted = b->trevsorted = BATatoms[b->ttype].linear != 0;
+ }
assert(b->batCapacity >= cnt);
}
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -733,6 +733,8 @@ heapinit(COLrec *col, const char *buf, i
&n) < 13)
GDKfatal("BBPinit: invalid format for BBP.dir\n%s", buf);
+ if (properties & ~0x0F81)
+ GDKfatal("BBPinit: unknown properties are set: incompatible
database\n");
*hashash = var & 2;
var &= ~2;
/* silently convert chr columns to bte */
@@ -1231,10 +1233,33 @@ BBPexit(void)
* reclaimed as well.
*/
static int
+heap_entry(stream *s, COLrec *col)
+{
+ int t;
+
+ t = col->type;
+ if (mnstr_printf(s, " %s %u %u %u " BUNFMT " " BUNFMT " " BUNFMT " "
+ BUNFMT " " OIDFMT " " OIDFMT " " SZFMT " " SZFMT " %d",
+ t >= 0 ? BATatoms[t].name : ATOMunknown_name(t),
+ col->width,
+ col->varsized | (col->vheap ? col->vheap->hashash <<
1 : 0),
+ (unsigned short) col->sorted | ((unsigned short)
col->revsorted << 7) | (((unsigned short) col->key & 0x01) << 8) | ((unsigned
short) col->dense << 9) | ((unsigned short) col->nonil << 10) | ((unsigned
short) col->nil << 11),
+ col->nokey[0],
+ col->nokey[1],
+ col->nosorted,
+ col->norevsorted,
+ col->seq,
+ col->align,
+ col->heap.free,
+ col->heap.size,
+ (int) col->heap.newstorage) < 0)
+ return -1;
+ return 0;
+}
+
+static int
new_bbpentry(stream *s, bat i)
{
- int t;
-
#ifndef NDEBUG
assert(i > 0);
assert(i < (bat) ATOMIC_GET(BBPsize, BBPsizeLock, "new_bbpentry"));
@@ -1272,39 +1297,9 @@ new_bbpentry(stream *s, bat i)
(unsigned char) BBP_desc(i)->S.map_hheap,
(unsigned char) BBP_desc(i)->S.map_theap) < 0)
return -1;
- t = BBP_desc(i)->H.type;
- if (mnstr_printf(s, " %s %u %u %u " BUNFMT " " BUNFMT " " BUNFMT " "
- BUNFMT " " OIDFMT " " OIDFMT " " SZFMT " " SZFMT " %d",
- t >= 0 ? BATatoms[t].name : ATOMunknown_name(t),
- BBP_desc(i)->H.width,
- BBP_desc(i)->H.varsized | (BBP_desc(i)->H.vheap ?
BBP_desc(i)->H.vheap->hashash << 1 : 0),
- ((unsigned short) BBP_desc(i)->H.sorted & 0x01) |
(((unsigned short) BBP_desc(i)->H.revsorted & 0x01) << 7) | (((unsigned short)
BBP_desc(i)->H.key & 0x01) << 8) | (((unsigned short) BBP_desc(i)->H.dense &
0x01) << 9) | (((unsigned short) BBP_desc(i)->H.nonil & 0x01) << 10) |
(((unsigned short) BBP_desc(i)->H.nil & 0x01) << 11),
- BBP_desc(i)->H.nokey[0],
- BBP_desc(i)->H.nokey[1],
- BBP_desc(i)->H.nosorted,
- BBP_desc(i)->H.norevsorted,
- BBP_desc(i)->H.seq,
- BBP_desc(i)->H.align,
- BBP_desc(i)->H.heap.free,
- BBP_desc(i)->H.heap.size,
- (int) BBP_desc(i)->H.heap.newstorage) < 0)
+ if (heap_entry(s, &BBP_desc(i)->H) < 0)
return -1;
- t = BBP_desc(i)->T.type;
- if (mnstr_printf(s, " %s %u %u %u " BUNFMT " " BUNFMT " " BUNFMT " "
- BUNFMT " " OIDFMT " " OIDFMT " " SZFMT " " SZFMT " %d",
- t >= 0 ? BATatoms[t].name : ATOMunknown_name(t),
- BBP_desc(i)->T.width,
- BBP_desc(i)->T.varsized | (BBP_desc(i)->T.vheap ?
BBP_desc(i)->T.vheap->hashash << 1 : 0),
- ((unsigned short) BBP_desc(i)->T.sorted & 0x01) |
(((unsigned short) BBP_desc(i)->T.revsorted & 0x01) << 7) | (((unsigned short)
BBP_desc(i)->T.key & 0x01) << 8) | (((unsigned short) BBP_desc(i)->T.dense &
0x01) << 9) | (((unsigned short) BBP_desc(i)->T.nonil & 0x01) << 10) |
(((unsigned short) BBP_desc(i)->T.nil & 0x01) << 11),
- BBP_desc(i)->T.nokey[0],
- BBP_desc(i)->T.nokey[1],
- BBP_desc(i)->T.nosorted,
- BBP_desc(i)->T.norevsorted,
- BBP_desc(i)->T.seq,
- BBP_desc(i)->T.align,
- BBP_desc(i)->T.heap.free,
- BBP_desc(i)->T.heap.size,
- (int) BBP_desc(i)->T.heap.newstorage) < 0)
+ if (heap_entry(s, &BBP_desc(i)->T) < 0)
return -1;
if (BBP_desc(i)->H.vheap &&
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -294,6 +294,12 @@ do {
\
} \
} while (0)
+#define quickins(dst, cnt, o, bn) \
+ do{ \
+ assert((cnt) < BATcapacity(bn)); \
+ dst[cnt] = (o); \
+ } while(0)
+
/* construct the mask */
#define impsmask(CAND,TEST,B) \
do { \
@@ -329,7 +335,7 @@ do {
\
* (dbl) (q-p) * 1.1 + 1024), \
BATcapacity(bn) + q - p, BUN_NONE)); \
} else { \
- impsloop(CAND, TEST, dst[cnt] = o); \
+ impsloop(CAND, TEST, quickins(dst, cnt, o, bn)); \
} \
} while (0)
@@ -367,7 +373,7 @@ do {
\
while (p < q) { \
CAND; \
v = src[o-off]; \
- buninsfix(bn, dst, cnt, (oid)(o), \
+ buninsfix(bn, dst, cnt, o, \
(BUN) ((dbl) cnt / (dbl) (p-r) \
* (dbl) (q-p) * 1.1 + 1024), \
BATcapacity(bn) + q - p, BUN_NONE); \
@@ -378,7 +384,8 @@ do {
\
while (p < q) { \
CAND; \
v = src[o-off]; \
- dst[cnt] = (oid)(o); \
+ assert(cnt < BATcapacity(bn)); \
+ dst[cnt] = o; \
cnt += (TEST); \
p++; \
} \
@@ -675,7 +682,7 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co
scanfunc_hge(NAME, CAND, END)
/* scan/imprints select with candidates */
-scan_sel(candscan, o = (oid) (*candlist++), w = (BUN) ((*(oid *) Tloc(s,q?(q -
1):0)) + 1))
+scan_sel(candscan, o = *candlist++, w = (BUN) ((*(oid *) Tloc(s,q?(q - 1):0))
+ 1))
/* scan/imprints select without candidates */
scan_sel(fullscan, o = (oid) (p+off), w = (BUN) (q+off))
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list