Changeset: 76ffd2312f54 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=76ffd2312f54 Modified Files: gdk/gdk_atoms.c gdk/gdk_join.c gdk/gdk_select.c gdk/gdk_utils.c monetdb5/modules/atoms/json.c Branch: default Log Message:
Merge with Jun2016 branch. diffs (truncated from 1450 to 300 lines): diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c --- a/gdk/gdk_atoms.c +++ b/gdk/gdk_atoms.c @@ -499,7 +499,8 @@ bitToStr(char **dst, int *len, const bit static bit * bitRead(bit *a, stream *s, size_t cnt) { - mnstr_read(s, (char *) a, 1, cnt); + if (mnstr_read(s, (char *) a, 1, cnt) < 0) + return NULL; return mnstr_errnr(s) ? NULL : a; } diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -136,9 +136,9 @@ joininitresults(BAT **r1p, BAT **r2p, BU if (lcnt == 0 || rcnt == 0) maxsize = nil_on_miss ? lcnt : 0; else if (BUN_MAX / lcnt >= rcnt) + maxsize = lcnt * rcnt; + else maxsize = BUN_MAX; - else - maxsize = lcnt * rcnt; } size = estimate == BUN_NONE ? lcnt : estimate; if (size > maxsize) diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -374,7 +374,7 @@ do { \ if (BATcapacity(bn) < maximum) { \ impsloop(CAND, TEST, \ buninsfix(bn, dst, cnt, o, \ - (BUN) ((dbl) cnt / (dbl) (p-r) \ + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) \ * (dbl) (q-p) * 1.1 + 1024), \ BATcapacity(bn) + q - p, BUN_NONE)); \ } else { \ @@ -439,7 +439,7 @@ do { \ v = src[o-off]; \ if (TEST) { \ buninsfix(bn, dst, cnt, o, \ - (BUN) ((dbl) cnt / (dbl) (p-r) \ + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) \ * (dbl) (q-p) * 1.1 + 1024), \ BATcapacity(bn) + q - p, BUN_NONE); \ cnt++; \ @@ -606,7 +606,7 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c v = BUNtail(bi,(BUN)(o-off)); if ((*cmp)(tl, v) == 0) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -630,7 +630,7 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c ((c = (*cmp)(th, v)) < 0 || (!hi && c == 0))))) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -654,7 +654,7 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c (c = cmp(th, v)) > 0 || (hi && c == 0)))) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -694,7 +694,7 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co v = BUNtail(bi,(BUN)(o-off)); if ((*cmp)(tl, v) == 0) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -718,7 +718,7 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co ((c = (*cmp)(th, v)) < 0 || (!hi && c == 0))))) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -742,7 +742,7 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co (c = cmp(th, v)) > 0 || (hi && c == 0)))) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -783,7 +783,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co while (p < q) { if (ptr[p] == pos) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -799,7 +799,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co while (p < q) { if (ptr[p] == pos) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -815,7 +815,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co while (p < q) { if (ptr[p] == pos) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -831,7 +831,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co while (p < q) { if (ptr[p] == pos) { buninsfix(bn, dst, cnt, o, - (BUN) ((dbl) cnt / (dbl) (p-r) + (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - r) * (dbl) (q-p) * 1.1 + 1024), BATcapacity(bn) + q - p, BUN_NONE); cnt++; @@ -2292,7 +2292,11 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT cnt + maximum, 1); break; } - case TYPE_int: { + case TYPE_int: +#if SIZEOF_OID == SIZEOF_INT + case TYPE_oid: +#endif + { int vl, vh; if ((vl = *(int *) vrl) == int_nil) continue; @@ -2304,9 +2308,18 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT vl = NEXTVALUEint(vl); } if (!hi) { - if (vh == MINVALUEint) - continue; - vh = PREVVALUEint(vh); +#if SIZEOF_OID == SIZEOF_INT + if (t == TYPE_oid) { + if (vh == MINVALUEoid) + continue; + vh = PREVVALUEoid(vh); + } else +#endif + { + if (vh == MINVALUEint) + continue; + vh = PREVVALUEint(vh); + } } if (vl > vh) continue; @@ -2324,62 +2337,11 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT cnt + maximum, 1); break; } - case TYPE_oid: { - oid vl, vh; - if ((vl = *(oid *) vrl) == oid_nil) - continue; - if ((vh = *(oid *) vrh) == oid_nil) - continue; - if (!li) { - if (vl == MAXVALUEoid) - continue; - vl = NEXTVALUEoid(vl); - } - if (!hi) { - if (vh == MINVALUEoid) - continue; - vh = PREVVALUEoid(vh); - } - if (vl > vh) - continue; -#if SIZEOF_OID == SIZEOF_INT - if (lcand) - ncnt = candscan_int(l, sl, r1, - (const int *) &vl, - (const int *) &vh, - 1, 1, 0, 0, 1, 1, - lstart, lend, cnt, - off, dst1, lcand, - cnt + maximum, 1); - else - ncnt = fullscan_int(l, sl, r1, - (const int *) &vl, - (const int *) &vh, - 1, 1, 0, 0, 1, 1, - lstart, lend, cnt, - off, dst1, NULL, - cnt + maximum, 1); -#else - if (lcand) - ncnt = candscan_lng(l, sl, r1, - (const lng *) &vl, - (const lng *) &vh, - 1, 1, 0, 0, 1, 1, - lstart, lend, cnt, - off, dst1, lcand, - cnt + maximum, 1); - else - ncnt = fullscan_lng(l, sl, r1, - (const lng *) &vl, - (const lng *) &vh, - 1, 1, 0, 0, 1, 1, - lstart, lend, cnt, - off, dst1, NULL, - cnt + maximum, 1); + case TYPE_lng: +#if SIZEOF_OID == SIZEOF_LNG + case TYPE_oid: #endif - break; - } - case TYPE_lng: { + { lng vl, vh; if ((vl = *(lng *) vrl) == lng_nil) continue; @@ -2391,9 +2353,18 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT vl = NEXTVALUElng(vl); } if (!hi) { - if (vh == MINVALUElng) - continue; - vh = PREVVALUElng(vh); +#if SIZEOF_OID == SIZEOF_LNG + if (t == TYPE_oid) { + if (vh == MINVALUEoid) + continue; + vh = PREVVALUEoid(vh); + } else +#endif + { + if (vh == MINVALUElng) + continue; + vh = PREVVALUElng(vh); + } } if (vl > vh) continue; diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -1953,6 +1953,11 @@ GDKmremap(const char *path, int mode, vo { void *ret; + if (*new_size > old_size && + GDKvm_cursize() + *new_size - old_size >= GDK_vm_maxsize) { + GDKerror("allocating too much virtual address space\n"); + return NULL; + } ret = MT_mremap(path, mode, old_address, old_size, new_size); if (ret == NULL) { GDKmemfail("GDKmremap", *new_size); diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c --- a/monetdb5/modules/atoms/json.c +++ b/monetdb5/modules/atoms/json.c @@ -69,7 +69,7 @@ JSONnewtree(int size) if (js == NULL) return NULL; js->elm = (JSONterm *) GDKzalloc(sizeof(JSONterm) * size); - if( js->elm == NULL){ + if (js->elm == NULL) { GDKfree(js); return NULL; } @@ -89,7 +89,7 @@ JSONnew(JSON *js) return js->free - 1; } js->elm = term; - memset(((char *) term) + sizeof(JSONterm) * js->size, 0, 8 * sizeof(JSONterm)); + memset(term + js->size, 0, 8 * sizeof(JSONterm)); js->size += 8; if (jsonhint < js->size) jsonhint = js->size; @@ -124,9 +124,10 @@ JSONfromString(str src, int *len, json * _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list