Changeset: b411630655c7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b411630655c7
Modified Files:
        gdk/gdk_aggr.c
        gdk/gdk_atoms.c
        gdk/gdk_atoms.h
        gdk/gdk_bat.c
        gdk/gdk_bbp.c
        gdk/gdk_calc.c
        gdk/gdk_select.c
        monetdb5/mal/mal_parser.c
        monetdb5/modules/atoms/mtime.c
        sql/backends/monet5/sql_cast_impl_int.h
        sql/backends/monet5/sql_round_impl.h
        sql/server/sql_parser.y
Branch: default
Log Message:

GDK_XXX_min and GDK_XXX_max are now inclusive.
This also means that the nil value is not equal to GDK_XXX_min.


diffs (truncated from 368 to 300 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -363,7 +363,7 @@ dofsum(const void *restrict values, oid 
                                        x = 2 * (hi + y);
                                        if (tp2 == TYPE_flt) {
                                                if (x > GDK_flt_max ||
-                                                   x <= GDK_flt_min) {
+                                                   x < GDK_flt_min) {
                                                        if (abort_on_error)
                                                                goto overflow;
                                                        ((flt *) results)[grp] 
= flt_nil;
@@ -432,7 +432,7 @@ dofsum(const void *restrict values, oid 
                GDKfree(pergroup[grp].partials);
                pergroup[grp].partials = NULL;
                if (tp2 == TYPE_flt) {
-                       if (hi > GDK_flt_max || hi <= GDK_flt_min) {
+                       if (hi > GDK_flt_max || hi < GDK_flt_min) {
                                if (abort_on_error)
                                        goto overflow;
                                ((flt *) results)[grp] = flt_nil;
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -248,14 +248,14 @@ ATOMisdescendant(int tpe, int parent)
 }
 
 
-const bte bte_nil = GDK_bte_min;
-const sht sht_nil = GDK_sht_min;
-const int int_nil = GDK_int_min;
-const flt flt_nil = GDK_flt_min;
-const dbl dbl_nil = GDK_dbl_min;
-const lng lng_nil = GDK_lng_min;
+const bte bte_nil = GDK_bte_min-1;
+const sht sht_nil = GDK_sht_min-1;
+const int int_nil = GDK_int_min-1;
+const flt flt_nil = -FLT_MAX;
+const dbl dbl_nil = -DBL_MAX;
+const lng lng_nil = GDK_lng_min-1;
 #ifdef HAVE_HGE
-const hge hge_nil = GDK_hge_min;
+const hge hge_nil = GDK_hge_min-1;
 #endif
 const oid oid_nil = (oid) 1 << (sizeof(oid) * 8 - 1);
 const char str_nil[2] = { '\200', 0 };
@@ -718,7 +718,7 @@ numFromStr(const char *src, size_t *len,
        switch (sz) {
        case 1: {
                bte **dstbte = (bte **) dst;
-               if (base <= GDK_bte_min || base > GDK_bte_max) {
+               if (base < GDK_bte_min || base > GDK_bte_max) {
                        goto overflow;
                }
                **dstbte = (bte) base;
@@ -726,7 +726,7 @@ numFromStr(const char *src, size_t *len,
        }
        case 2: {
                sht **dstsht = (sht **) dst;
-               if (base <= GDK_sht_min || base > GDK_sht_max) {
+               if (base < GDK_sht_min || base > GDK_sht_max) {
                        goto overflow;
                }
                **dstsht = (sht) base;
@@ -734,7 +734,7 @@ numFromStr(const char *src, size_t *len,
        }
        case 4: {
                int **dstint = (int **) dst;
-               if (base <= GDK_int_min || base > GDK_int_max) {
+               if (base < GDK_int_min || base > GDK_int_max) {
                        goto overflow;
                }
                **dstint = (int) base;
@@ -743,7 +743,7 @@ numFromStr(const char *src, size_t *len,
        case 8: {
                lng **dstlng = (lng **) dst;
 #ifdef HAVE_HGE
-               if (base <= GDK_lng_min || base > GDK_lng_max) {
+               if (base < GDK_lng_min || base > GDK_lng_max) {
                        goto overflow;
                }
 #endif
@@ -861,7 +861,7 @@ hgeToStr(char **dst, size_t *len, const 
                strncpy(*dst, "nil", *len);
                return 3;
        }
-       if ((hge) GDK_lng_min < *src && *src <= (hge) GDK_lng_max) {
+       if ((hge) GDK_lng_min <= *src && *src <= (hge) GDK_lng_max) {
                lng s = (lng) *src;
                return lngToStr(dst, len, &s);
        } else {
diff --git a/gdk/gdk_atoms.h b/gdk/gdk_atoms.h
--- a/gdk/gdk_atoms.h
+++ b/gdk/gdk_atoms.h
@@ -84,22 +84,22 @@ gdk_export size_t escapedStr(char *dst, 
 #define GDK_bit_max ((bit) 1)
 #define GDK_bit_min ((bit) 0)
 #define GDK_bte_max ((bte) SCHAR_MAX)
-#define GDK_bte_min ((bte) SCHAR_MIN)
+#define GDK_bte_min ((bte) SCHAR_MIN+1)
 #define GDK_sht_max ((sht) SHRT_MAX)
-#define GDK_sht_min ((sht) SHRT_MIN)
+#define GDK_sht_min ((sht) SHRT_MIN+1)
 #define GDK_int_max INT_MAX
-#define GDK_int_min INT_MIN
+#define GDK_int_min (INT_MIN+1)
 #define GDK_flt_max ((flt) FLT_MAX)
-#define GDK_flt_min (-GDK_flt_max)
+#define GDK_flt_min (-3.4028233e+38F) /* nextafterf(-FLT_MAX,0) */
 #define GDK_lng_max ((lng) LLONG_MAX)
-#define GDK_lng_min ((lng) LLONG_MIN)
+#define GDK_lng_min ((lng) LLONG_MIN+1)
 #ifdef HAVE_HGE
 #define GDK_hge_max ((((hge) 1) << 126) - 1 + \
                      (((hge) 1) << 126))
-#define GDK_hge_min (-GDK_hge_max-1)
+#define GDK_hge_min (-GDK_hge_max)
 #endif
 #define GDK_dbl_max ((dbl) DBL_MAX)
-#define GDK_dbl_min (-GDK_dbl_max)
+#define GDK_dbl_min (-1.7976931348623155e+308) /* nextafter(-DBL_MAX,0) */
 /* GDK_oid_max see below */
 #define GDK_oid_min ((oid) 0)
 /* representation of the nil */
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1493,8 +1493,8 @@ BAThseqbase(BAT *b, oid o)
 {
        if (b == NULL)
                return;
-       assert(o < oid_nil);    /* i.e., not oid_nil */
-       assert(o + BATcount(b) < oid_nil);
+       assert(o <= GDK_oid_max);       /* i.e., not oid_nil */
+       assert(o + BATcount(b) <= GDK_oid_max);
        assert(b->batCacheid > 0);
        if (b->hseqbase != o) {
                b->batDirtydesc = TRUE;
@@ -1508,7 +1508,7 @@ BATtseqbase(BAT *b, oid o)
        if (b == NULL)
                return;
        assert(o <= oid_nil);
-       assert(is_oid_nil(o) || o + BATcount(b) < oid_nil);
+       assert(is_oid_nil(o) || o + BATcount(b) <= GDK_oid_max);
        assert(b->batCacheid > 0);
        if (ATOMtype(b->ttype) == TYPE_oid) {
                if (b->tseqbase != o) {
@@ -2018,8 +2018,8 @@ BATassertProps(BAT *b)
        assert(b->batCount >= b->batInserted);
 
        /* headless */
-       assert(b->hseqbase < oid_nil); /* non-nil seqbase */
-       assert(b->hseqbase + BATcount(b) < oid_nil);
+       assert(b->hseqbase <= GDK_oid_max); /* non-nil seqbase */
+       assert(b->hseqbase + BATcount(b) <= GDK_oid_max);
 
        bbpstatus = BBP_status(b->batCacheid);
        /* only at most one of BBPDELETED, BBPEXISTING, BBPNEW may be set */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -958,7 +958,7 @@ headheapinit(oid *hseq, const char *buf,
                GDKfatal("BBPinit: head column must be VOID (ID = %d).", (int) 
bid);
        if (base < 0
 #if SIZEOF_OID < SIZEOF_LNG
-           || base >= (lng) oid_nil
+           || base > (lng) GDK_oid_max
 #endif
                )
                GDKfatal("BBPinit: head seqbase out of range (ID = %d, seq = 
"LLFMT").", (int) bid, base);
@@ -1192,7 +1192,7 @@ BBPreadEntries(FILE *fp, int bbpversion)
                } else {
                        if (base < 0
 #if SIZEOF_OID < SIZEOF_LNG
-                           || base >= (lng) oid_nil
+                           || base > (lng) GDK_oid_max
 #endif
                                )
                                GDKfatal("BBPinit: head seqbase out of range 
(ID = "LLFMT", seq = "LLFMT").", batid, base);
diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -13439,7 +13439,7 @@ convert_##TYPE1##_##TYPE2(const TYPE1 *s
                if (is_##TYPE1##_nil(src[i])) {                         \
                        dst[i] = TYPE2##_nil;                           \
                                nils++;                                 \
-               } else if (src[i] <= (TYPE1) GDK_##TYPE2##_min ||       \
+               } else if (src[i] < (TYPE1) GDK_##TYPE2##_min ||        \
                           src[i] > (TYPE1) GDK_##TYPE2##_max) {        \
                        if (abort_on_error)                             \
                                CONV_OVERFLOW(TYPE1, #TYPE2, src[i]);   \
@@ -13491,7 +13491,7 @@ convert_##TYPE1##_##TYPE2(const TYPE1 *s
                if (is_##TYPE1##_nil(src[i])) {                         \
                        dst[i] = TYPE2##_nil;                           \
                        nils++;                                         \
-               } else if (src[i] <= (TYPE1) GDK_##TYPE2##_min ||       \
+               } else if (src[i] < (TYPE1) GDK_##TYPE2##_min ||        \
                           src[i] > (TYPE1) GDK_##TYPE2##_max) {        \
                        if (abort_on_error)                             \
                                CONV_OVERFLOW(TYPE1, #TYPE2, src[i]);   \
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -470,16 +470,16 @@ do {                                                      
                \
 #define NEXTVALUEflt(x)        nextafterf((x), GDK_flt_max)
 #define NEXTVALUEdbl(x)        nextafter((x), GDK_dbl_max)
 
-#define MINVALUEbte    NEXTVALUEbte(GDK_bte_min)
-#define MINVALUEsht    NEXTVALUEsht(GDK_sht_min)
-#define MINVALUEint    NEXTVALUEint(GDK_int_min)
-#define MINVALUElng    NEXTVALUElng(GDK_lng_min)
+#define MINVALUEbte    GDK_bte_min
+#define MINVALUEsht    GDK_sht_min
+#define MINVALUEint    GDK_int_min
+#define MINVALUElng    GDK_lng_min
 #ifdef HAVE_HGE
-#define MINVALUEhge    NEXTVALUEhge(GDK_hge_min)
+#define MINVALUEhge    GDK_hge_min
 #endif
 #define MINVALUEoid    GDK_oid_min
-#define MINVALUEflt    NEXTVALUEflt(GDK_flt_min)
-#define MINVALUEdbl    NEXTVALUEdbl(GDK_dbl_min)
+#define MINVALUEflt    GDK_flt_min
+#define MINVALUEdbl    GDK_dbl_min
 
 #define MAXVALUEbte    GDK_bte_max
 #define MAXVALUEsht    GDK_sht_max
diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c
--- a/monetdb5/mal/mal_parser.c
+++ b/monetdb5/mal/mal_parser.c
@@ -574,11 +574,11 @@ handleInts:
                        if (hgeFromStr(CURRENT(cntxt), &len, &pval) < 0)
                                l = hge_nil;
 
-                       if ((hge) GDK_int_min < l && l <= (hge) GDK_int_max) {
+                       if ((hge) GDK_int_min <= l && l <= (hge) GDK_int_max) {
                                cst->vtype = TYPE_int;
                                cst->val.ival = (int) l;
                        } else
-                       if ((hge) GDK_lng_min < l && l <= (hge) GDK_lng_max) {
+                       if ((hge) GDK_lng_min <= l && l <= (hge) GDK_lng_max) {
                                cst->vtype = TYPE_lng;
                                cst->val.lval = (lng) l;
                        } else {
@@ -593,7 +593,7 @@ handleInts:
                        if (lngFromStr(CURRENT(cntxt), &len, &pval) < 0)
                                l = lng_nil;
 
-                       if ((lng) GDK_int_min < l && l <= (lng) GDK_int_max) {
+                       if ((lng) GDK_int_min <= l && l <= (lng) GDK_int_max) {
                                cst->vtype = TYPE_int;
                                cst->val.ival = (int) l;
                        } else {
diff --git a/monetdb5/modules/atoms/mtime.c b/monetdb5/modules/atoms/mtime.c
--- a/monetdb5/modules/atoms/mtime.c
+++ b/monetdb5/modules/atoms/mtime.c
@@ -2623,7 +2623,7 @@ MTIMEsecs2daytime(daytime *ret, const ln
 {
        *ret = is_lng_nil(*s) ||
                        *s > GDK_int_max / 1000 ||
-                       *s <= GDK_int_min / 1000 ?
+                       *s < GDK_int_min / 1000 ?
                daytime_nil : (daytime) (*s * 1000);
        return MAL_SUCCEED;
 }
@@ -2650,7 +2650,7 @@ MTIMEsecs2daytime_bulk(bat *ret, bat *bi
        for (n = BATcount(b); n > 0; n--, s++, dt++) {
                if (is_lng_nil(*s) ||
                        *s > GDK_int_max / 1000 ||
-                       *s <= GDK_int_min / 1000) {
+                       *s < GDK_int_min / 1000) {
                        *dt = daytime_nil;
                        bn->tnil = 1;
                } else {
@@ -2713,7 +2713,7 @@ MTIMEepoch2int(int *ret, const timestamp
                return err;
        if (is_lng_nil(v))
                *ret = int_nil;
-       else if ((v/1000) > GDK_int_max || (v/1000) <= GDK_int_min)
+       else if ((v/1000) > GDK_int_max || (v/1000) < GDK_int_min)
                throw(MAL, "mtime.epoch", "22003!epoch value too large");
        else
                *ret = (int) (v / 1000);
diff --git a/sql/backends/monet5/sql_cast_impl_int.h 
b/sql/backends/monet5/sql_cast_impl_int.h
--- a/sql/backends/monet5/sql_cast_impl_int.h
+++ b/sql/backends/monet5/sql_cast_impl_int.h
@@ -40,7 +40,7 @@ FUN(do_,TP1,_dec2dec_,TP2) (TP2 *restric
 
 #ifdef DOWNCAST
        if (s2 > s1) {
-               if (val <= GDKmin(TP2) / scales[s2 - s1] ||
+               if (val < GDKmin(TP2) / scales[s2 - s1] ||
                    val > GDKmax(TP2) / scales[s2 - s1]) {
                        char *buf = NULL, *msg;
                        size_t len = 0;
@@ -53,7 +53,7 @@ FUN(do_,TP1,_dec2dec_,TP2) (TP2 *restric
                }
                val *= (TP1) scales[s2 - s1];
        } else if (s2 < s1) {
-               if (val / scales[s1 - s2] <= GDKmin(TP2) ||
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to