Changeset: 7246d7d75c53 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7246d7d75c53
Modified Files:
sql/backends/monet5/sql.mal
sql/backends/monet5/sql_cast.h
sql/backends/monet5/sql_cast_impl_down_from_flt.h
sql/backends/monet5/sql_cast_impl_down_from_int.h
sql/backends/monet5/sql_cast_impl_up_to_flt.h
sql/backends/monet5/sql_cast_impl_up_to_int.h
Branch: Oct2014
Log Message:
Added missing MAL interface, removed unused C functions.
diffs (truncated from 427 to 300 lines):
diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -624,6 +624,24 @@ command calc.second_interval( sc:int, v:
address int_dec2second_interval
comment "cast int decimal to a second_interval";
+command sql.dec_round( v:wrd, r:wrd ) :wrd
+address wrd_dec_round_wrap
+comment "round off the value v to nearests multiple of r";
+command batsql.dec_round( v:bat[:oid,:wrd], r:wrd ) :bat[:oid,:wrd]
+address wrd_bat_dec_round_wrap
+comment "round off the value v to nearests multiple of r";
+
+command sql.round( v:wrd, d:int, s:int, r:bte) :wrd
+address wrd_round_wrap
+comment "round off the decimal v(d,s) to r digits behind the dot (if r < 0,
before the dot)";
+command batsql.round( v:bat[:oid,:wrd], d:int, s:int, r:bte) :bat[:oid,:wrd]
+address wrd_bat_round_wrap
+comment "round off the decimal v(d,s) to r digits behind the dot (if r < 0,
before the dot)";
+
+command calc.second_interval( sc:int, v:wrd, ek:int, sk:int ) :lng
+address wrd_dec2second_interval
+comment "cast wrd decimal to a second_interval";
+
command sql.dec_round( v:lng, r:lng ) :lng
address lng_dec_round_wrap
comment "round off the value v to nearests multiple of r";
diff --git a/sql/backends/monet5/sql_cast.h b/sql/backends/monet5/sql_cast.h
--- a/sql/backends/monet5/sql_cast.h
+++ b/sql/backends/monet5/sql_cast.h
@@ -22,8 +22,6 @@
*/
#define CAST_INTEGER_2_NUMERIC_2(T1,T2)
\
-sql5_export str T1##_2_##T2(T2 *res, const T1 *v); \
-sql5_export str bat##T1##_2_##T2(bat *res, const bat *v); \
sql5_export str T1##_dec2_##T2(T2 *res, const int *s1, const T1 *v); \
sql5_export str bat##T1##_dec2_##T2(bat *res, const int *s1, const bat *v); \
sql5_export str T1##_dec2dec_##T2(T2 *res, const int *S1, const T1 *v, const
int *d2, const int *S2); \
@@ -48,8 +46,6 @@ CAST_INTEGER_2_NUMERIC_1(lng);
#define CAST_FLOATINGPOINT_2_INTEGER_2(T1,T2) \
-sql5_export str T1##_2_##T2(T2 *res, const T1 *v); \
-sql5_export str bat##T1##_2_##T2(bat *res, const bat *v); \
sql5_export str T1##_num2dec_##T2(T2 *res, const T1 *v, const int *d2, const
int *s2); \
sql5_export str bat##T1##_num2dec_##T2(bat *res, const bat *v, const int *d2,
const int *s2)
diff --git a/sql/backends/monet5/sql_cast_impl_down_from_flt.h
b/sql/backends/monet5/sql_cast_impl_down_from_flt.h
--- a/sql/backends/monet5/sql_cast_impl_down_from_flt.h
+++ b/sql/backends/monet5/sql_cast_impl_down_from_flt.h
@@ -39,99 +39,6 @@
#define FUN(a,b,c,d) CONCAT_4(a,b,c,d)
-str
-FUN(,TP1,_2_,TP2) (TP2 *res, const TP1 *v)
-{
- dbl val = *v;
-
- /* shortcut nil */
- if (*v == NIL(TP1)) {
- *res = NIL(TP2);
- return (MAL_SUCCEED);
- }
-
- /* see if the number fits in the data type */
- if ((dbl) (TP2) val > (dbl) GDKmin(TP2) && val > (dbl) GDKmin(TP2) &&
val <= (dbl) GDKmax(TP2)) {
- *res = (TP2) val;
- return (MAL_SUCCEED);
- } else {
- throw(SQL, "convert", "22003!value (" "%f" ") exceeds limits of
type "STRNG(TP2), val);
- }
-}
-
-str
-FUN(bat,TP1,_2_,TP2) (int *res, const int *bid)
-{
- BAT *b, *bn;
- TP1 *p, *q;
- char *msg = NULL;
- TP2 *o;
- dbl val;
-
- if ((b = BATdescriptor(*bid)) == NULL) {
- throw(SQL, "batcalc."STRNG(FUN(,TP1,_2_,TP2)), "Cannot access
descriptor");
- }
- bn = BATnew(TYPE_void, TPE(TP2), BATcount(b), TRANSIENT);
- if (bn == NULL) {
- BBPreleaseref(b->batCacheid);
- throw(SQL, "sql."STRNG(FUN(,TP1,_2_,TP2)), MAL_MALLOC_FAIL);
- }
- BATseqbase(bn, b->hseqbase);
- bn->H->nonil = 1;
- bn->T->nonil = 1;
- o = (TP2 *) Tloc(bn, BUNfirst(bn));
- p = (TP1 *) Tloc(b, BUNfirst(b));
- q = (TP1 *) Tloc(b, BUNlast(b));
- if (b->T->nonil) {
- for (; p < q; p++, o++) {
- val = *p;
- /* see if the number fits in the data type */
- if ((dbl) (TP2) val > (dbl) GDKmin(TP2) && val > (dbl)
GDKmin(TP2) && val <= (dbl) GDKmax(TP2)) {
- *o = (TP2) val;
- } else {
- msg = createException(SQL, "convert",
"22003!value (" "%f" ") exceeds limits of type "STRNG(TP2), val);
- break;
- }
- }
- } else {
- for (; p < q; p++, o++) {
- if (*p == NIL(TP1)) {
- *o = NIL(TP2);
- bn->T->nonil = FALSE;
- } else {
- val = *p;
- /* see if the number fits in the data type */
- if ((dbl) (TP2) val > (dbl) GDKmin(TP2) && val
> (dbl) GDKmin(TP2) && val <= (dbl) GDKmax(TP2)) {
- *o = (TP2) val;
- } else {
- msg = createException(SQL, "convert",
"22003!value (" "%f" ") exceeds limits of type "STRNG(TP2), val);
- break;
- }
- }
- }
- }
- BATsetcount(bn, BATcount(b));
- bn->hrevsorted = bn->batCount <= 1;
- bn->tsorted = 0;
- bn->trevsorted = 0;
- BATkey(BATmirror(bn), FALSE);
-
- if (!(bn->batDirty & 2))
- bn = BATsetaccess(bn, BAT_READ);
-
- if (b->htype != bn->htype) {
- BAT *r = VIEWcreate(b, bn);
-
- BBPkeepref(*res = r->batCacheid);
- BBPreleaseref(bn->batCacheid);
- BBPreleaseref(b->batCacheid);
- return msg;
- }
- BBPkeepref(*res = bn->batCacheid);
- BBPreleaseref(b->batCacheid);
- return msg;
-}
-
/* when casting a floating point to an decimal we like to preserve the
* precision. This means we first scale the float before converting.
*/
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
@@ -36,111 +36,6 @@
str
-FUN(,TP1,_2_,TP2) (TP2 *res, const TP1 *v)
-{
- lng val = *v;
-
- /* shortcut nil */
- if (*v == NIL(TP1)) {
- *res = NIL(TP2);
- return (MAL_SUCCEED);
- }
-
- /* see if the number fits in the data type */
- 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 {
- throw(SQL, "convert", "22003!value (" LLFMT ") exceeds limits
of type "STRNG(TP2), val);
- }
-}
-
-str
-FUN(bat,TP1,_2_,TP2) (int *res, const int *bid)
-{
- BAT *b, *bn;
- TP1 *p, *q;
- char *msg = NULL;
- TP2 *o;
- lng val;
-
- if ((b = BATdescriptor(*bid)) == NULL) {
- throw(SQL, "batcalc."STRNG(FUN(,TP1,_2_,TP2)), "Cannot access
descriptor");
- }
- bn = BATnew(TYPE_void, TPE(TP2), BATcount(b), TRANSIENT);
- if (bn == NULL) {
- BBPreleaseref(b->batCacheid);
- throw(SQL, "sql."STRNG(FUN(,TP1,_2_,TP2)), MAL_MALLOC_FAIL);
- }
- BATseqbase(bn, b->hseqbase);
- bn->H->nonil = 1;
- bn->T->nonil = 1;
- o = (TP2 *) Tloc(bn, BUNfirst(bn));
- p = (TP1 *) Tloc(b, BUNfirst(b));
- q = (TP1 *) Tloc(b, BUNlast(b));
- if (b->T->nonil) {
- for (; p < q; p++, o++) {
- val = *p;
- /* see if the number fits in the data type */
- 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);
- break;
- }
- }
- } else {
- for (; p < q; p++, o++) {
- if (*p == NIL(TP1)) {
- *o = NIL(TP2);
- bn->T->nonil = FALSE;
- } else {
- val = *p;
- /* see if the number fits in the data type */
- 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);
- break;
- }
- }
- }
- }
- BATsetcount(bn, BATcount(b));
- bn->hrevsorted = bn->batCount <= 1;
- bn->tsorted = 0;
- bn->trevsorted = 0;
- BATkey(BATmirror(bn), FALSE);
-
- if (!(bn->batDirty & 2))
- bn = BATsetaccess(bn, BAT_READ);
-
- if (b->htype != bn->htype) {
- BAT *r = VIEWcreate(b, bn);
-
- BBPkeepref(*res = r->batCacheid);
- BBPreleaseref(bn->batCacheid);
- BBPreleaseref(b->batCacheid);
- return msg;
- }
- BBPkeepref(*res = bn->batCacheid);
- BBPreleaseref(b->batCacheid);
- return msg;
-}
-
-str
FUN(,TP1,_dec2_,TP2) (TP2 *res, const int *s1, const TP1 *v)
{
int scale = *s1;
diff --git a/sql/backends/monet5/sql_cast_impl_up_to_flt.h
b/sql/backends/monet5/sql_cast_impl_up_to_flt.h
--- a/sql/backends/monet5/sql_cast_impl_up_to_flt.h
+++ b/sql/backends/monet5/sql_cast_impl_up_to_flt.h
@@ -37,76 +37,6 @@
str
-FUN(,TP1,_2_,TP2) (TP2 *res, const TP1 *v)
-{
- /* shortcut nil */
- if (*v == NIL(TP1)) {
- *res = NIL(TP2);
- return (MAL_SUCCEED);
- }
-
- /* since the TP2 type is bigger than or equal to the TP1 type, it will
- always fit */
- *res = (TP2) *v;
- return (MAL_SUCCEED);
-}
-
-str
-FUN(bat,TP1,_2_,TP2) (int *res, const int *bid)
-{
- BAT *b, *bn;
- TP1 *p, *q;
- TP2 *o;
-
- if ((b = BATdescriptor(*bid)) == NULL) {
- throw(SQL, "batcalc."STRNG(FUN(,TP1,_2_,TP2)), "Cannot access
descriptor");
- }
- bn = BATnew(TYPE_void, TPE(TP2), BATcount(b), TRANSIENT);
- if (bn == NULL) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list