Changeset: ecda37e93a60 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ecda37e93a60
Modified Files:
common/stream/stream.c
sql/backends/monet5/sql_cast_impl_down_from_int.h
sql/backends/monet5/sql_round_impl.h
Branch: Jan2014
Log Message:
merged
diffs (129 lines):
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -3435,7 +3435,7 @@ wbs_write(stream *s, const void *buf, si
size_t nbytes, reqsize = cnt * elmsize, todo = reqsize;
wbs = (wbs_stream *) s->stream_data.p;
- if (wbs == NULL || wbs->buf == NULL)
+ if (wbs == NULL)
return -1;
while (todo > 0) {
int flush = 1;
diff --git a/sql/backends/monet5/sql_cast_impl_down_from_int.h
b/sql/backends/monet5/sql_cast_impl_down_from_int.h
--- a/sql/backends/monet5/sql_cast_impl_down_from_int.h
+++ b/sql/backends/monet5/sql_cast_impl_down_from_int.h
@@ -47,7 +47,11 @@ FUN(,TP1,_2_,TP2) (TP2 *res, TP1 *v)
}
/* see if the number fits in the data type */
- if ((lng) (TP2) val > (lng) GDKmin(TP2) && val > (lng) GDKmin(TP2) &&
val <= (lng) GDKmax(TP2)) {
+ if (val > (lng) GDKmin(TP2)
+#if TPE(TP2) != TYPE_wrd || SIZEOF_LNG != SIZEOF_WRD
+ && val <= (lng) GDKmax(TP2)
+#endif
+ ) {
*res = (TP2) val;
return (MAL_SUCCEED);
} else {
@@ -82,7 +86,11 @@ FUN(bat,TP1,_2_,TP2) (int *res, int *bid
for (; p < q; p++, o++) {
val = *p;
/* see if the number fits in the data type */
- if ((lng) (TP2) val > (lng) GDKmin(TP2) && val > (lng)
GDKmin(TP2) && val <= (lng) GDKmax(TP2)) {
+ if (val > (lng) GDKmin(TP2)
+#if TPE(TP2) != TYPE_wrd || SIZEOF_LNG != SIZEOF_WRD
+ && val <= (lng) GDKmax(TP2)
+#endif
+ ) {
*o = (TP2) val;
} else {
msg = createException(SQL, "convert",
"22003!value (" LLFMT ") exceeds limits of type "STRNG(TP2), val);
@@ -97,7 +105,11 @@ FUN(bat,TP1,_2_,TP2) (int *res, int *bid
} else {
val = *p;
/* see if the number fits in the data type */
- if ((lng) (TP2) val > (lng) GDKmin(TP2) && val
> (lng) GDKmin(TP2) && val <= (lng) GDKmax(TP2)) {
+ if (val > (lng) GDKmin(TP2)
+#if TPE(TP2) != TYPE_wrd || SIZEOF_LNG != SIZEOF_WRD
+ && val <= (lng) GDKmax(TP2)
+#endif
+ ) {
*o = (TP2) val;
} else {
msg = createException(SQL, "convert",
"22003!value (" LLFMT ") exceeds limits of type "STRNG(TP2), val);
@@ -143,7 +155,11 @@ FUN(,TP1,_dec2_,TP2) (TP2 *res, int *s1,
if (scale)
val = (val + h * scales[scale - 1]) / scales[scale];
/* see if the number fits in the data type */
- if (val > GDKmin(TP2) && val <= GDKmax(TP2)) {
+ if (val > (lng) GDKmin(TP2)
+#if TPE(TP2) != TYPE_wrd || SIZEOF_LNG != SIZEOF_WRD
+ && val <= GDKmax(TP2)
+#endif
+ ) {
*res = (TP2) val;
return MAL_SUCCEED;
} else {
@@ -179,7 +195,11 @@ FUN(,TP1,_dec2dec_,TP2) (TP2 *res, int *
val = (val + h * scales[s1 - s2 - 1]) / scales[s1 - s2];
/* see if the number fits in the data type */
- if (val > GDKmin(TP2) && val <= GDKmax(TP2)) {
+ if (val > (lng) GDKmin(TP2)
+#if TPE(TP2) != TYPE_wrd || SIZEOF_LNG != SIZEOF_WRD
+ && val <= GDKmax(TP2)
+#endif
+ ) {
*res = (TP2) val;
return MAL_SUCCEED;
} else {
@@ -226,7 +246,11 @@ FUN(bat,TP1,_dec2_,TP2) (int *res, int *
else
val = (TP1) (*p);
/* see if the number fits in the data type */
- if (val > GDKmin(TP2) && val <= GDKmax(TP2))
+ if (val > (lng) GDKmin(TP2)
+#if TPE(TP2) != TYPE_wrd || SIZEOF_LNG != SIZEOF_WRD
+ && val <= GDKmax(TP2)
+#endif
+ )
*o = (TP2) val;
else {
BBPreleaseref(b->batCacheid);
@@ -245,7 +269,11 @@ FUN(bat,TP1,_dec2_,TP2) (int *res, int *
else
val = (TP1) (*p);
/* see if the number fits in the data type */
- if (val > GDKmin(TP2) && val <= GDKmax(TP2))
+ if (val > (lng) GDKmin(TP2)
+#if TPE(TP2) != TYPE_wrd || SIZEOF_LNG != SIZEOF_WRD
+ && val <= GDKmax(TP2)
+#endif
+ )
*o = (TP2) val;
else {
BBPreleaseref(b->batCacheid);
diff --git a/sql/backends/monet5/sql_round_impl.h
b/sql/backends/monet5/sql_round_impl.h
--- a/sql/backends/monet5/sql_round_impl.h
+++ b/sql/backends/monet5/sql_round_impl.h
@@ -158,7 +158,9 @@ round_body_nonil(TYPE v, int d, int s, i
lres = (((v + rnd) / scales[dff]) * scales[dff]);
else
lres = (((v - rnd) / scales[dff]) * scales[dff]);
+#if TPE(TYPE) != TYPE_lng && (TPE(TYPE) != TYPE_wrd || SIZEOF_WRD !=
SIZEOF_LNG)
assert((lng) GDKmin(TYPE) < lres && lres <= (lng) GDKmax(TYPE));
+#endif
res = (TYPE) lres;
} else if (r <= 0 && -r + s > 0) {
int dff = -r + s;
@@ -168,7 +170,9 @@ round_body_nonil(TYPE v, int d, int s, i
lres = (((v + rnd) / scales[dff]) * scales[dff]);
else
lres = (((v - rnd) / scales[dff]) * scales[dff]);
+#if TPE(TYPE) != TYPE_lng && (TPE(TYPE) != TYPE_wrd || SIZEOF_WRD !=
SIZEOF_LNG)
assert((lng) GDKmin(TYPE) < lres && lres <= (lng) GDKmax(TYPE));
+#endif
res = (TYPE) lres;
} else {
res = v;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list