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

Reply via email to