Changeset: 29b4294d4bea for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=29b4294d4bea
Modified Files:
monetdb5/modules/kernel/batmtime.mx
Branch: default
Log Message:
Partial de-mx batmtime
Rest should be taken care of by shell scripting
diffs (truncated from 316 to 300 lines):
diff --git a/monetdb5/modules/kernel/batmtime.mx
b/monetdb5/modules/kernel/batmtime.mx
--- a/monetdb5/modules/kernel/batmtime.mx
+++ b/monetdb5/modules/kernel/batmtime.mx
@@ -30,28 +30,25 @@ All Rights Reserved.
* In line with the batcalc module, we assume that
* if two bat operands are provided that they are already
* aligned on the head. Moreover, the head of the BATs
- * are limited to :void, which can be cheaply realized using
+ * are limited to :oid, which can be cheaply realized using
* the GRPsplit operation.
*/
@= compareOp
command batcalc.@2( l:bat[:oid,:@1], r:bat[:oid,:@1]) :bat[:oid,:bit]
-address MTIMEbat_@1_@3;
-
-command batcalc.@2( l:bat[:void,:@1], r:bat[:void,:@1]) :bat[:void,:bit]
address MTIMEbat_@1_@3
comment "Compare a bat of @1 against each other";
command batcalc.@2( l:bat[:oid,:@1], r:@1) :bat[:oid,:bit]
address MTIMEbat_@1_@3_cst;
-command batcalc.@2( l:bat[:void,:@1], r:@1) :bat[:void,:bit]
+command batcalc.@2(r:@1, l:bat[:oid,:@1]) :bat[:oid,:bit]
address MTIMEbat_@1_cst_@3
comment "Compare a bat of @1 against a singleton";
-command batcalc.@2(a:bat[:void,:bit], l:bat[:void,:@1], r:bat[:void,:@1])
:bat[:void,:bit]
+command batcalc.@2(a:bat[:oid,:bit], l:bat[:oid,:@1], r:bat[:oid,:@1])
:bat[:oid,:bit]
address MTIMEaccum_@1_@3
comment "Compare a bat of @1 against each other";
-command batcalc.@2(a:bat[:void,:bit], l:bat[:oid,:@1], r:@1) :bat[:oid,:bit]
+command batcalc.@2(a:bat[:oid,:bit], l:bat[:oid,:@1], r:@1) :bat[:oid,:bit]
address MTIMEaccum_@1_@3_cst;
-command batcalc.@2(a:bat[:void,:bit], l:bat[:void,:@1], r:@1) :bat[:void,:bit]
+command batcalc.@2(a:bat[:oid,:bit], r:@1, l:bat[:oid,:@1]) :bat[:oid,:bit]
address MTIMEaccum_@1_cst_@3
comment "Compare a bat of @1 against a singleton";
@@ -64,24 +61,35 @@ comment "Compare a bat of @1 against a s
@:compareOp(@1,>,GT)@
@:compareOp(@1,>=,GE)@
-@= unaryISNIL
- command batcalc.isnil(b:bat[:any_1,:@1]):bat[:any_1,:bit]
- address MTIMEunaryISNIL
- comment "Unary check for nil over the tail of the bat";
-
- command batcalc.isnil(b:bat[:void,:@1]):bat[:oid,:bit]
- address MTIMEunaryISNIL
- comment "Unary check for nil over the tail of the bat";
-
-@
@mal
@:compareGrp(date)@
@:compareGrp(daytime)@
@:compareGrp(timestamp)@
-@:unaryISNIL(date)@
-@:unaryISNIL(daytime)@
-@:unaryISNIL(timestamp)@
+command batcalc.isnil(b:bat[:any_1,:date]):bat[:any_1,:bit]
+address MTIMEunaryISNIL
+comment "Unary check for nil over the tail of the bat";
+
+command batcalc.isnil(b:bat[:oid,:date]):bat[:oid,:bit]
+address MTIMEunaryISNIL
+comment "Unary check for nil over the tail of the bat";
+
+command batcalc.isnil(b:bat[:any_1,:daytime]):bat[:any_1,:bit]
+address MTIMEunaryISNIL
+comment "Unary check for nil over the tail of the bat";
+
+command batcalc.isnil(b:bat[:oid,:daytime]):bat[:oid,:bit]
+address MTIMEunaryISNIL
+comment "Unary check for nil over the tail of the bat";
+
+command batcalc.isnil(b:bat[:any_1,:timestamp]):bat[:any_1,:bit]
+address MTIMEunaryISNIL
+comment "Unary check for nil over the tail of the bat";
+
+command batcalc.isnil(b:bat[:oid,:timestamp]):bat[:oid,:bit]
+address MTIMEunaryISNIL
+comment "Unary check for nil over the tail of the bat";
+
@h
/*
@@ -112,9 +120,6 @@ comment "Compare a bat of @1 against a s
* head column. This is not checked and may be mis-used to deploy the
* implementation for shifted window arithmetic as well.
*/
-@= chkSize
- if( BATcount(@1) != BATcount(@2) )
- throw(MAL, "batcalc.@3", ILLEGAL_ARGUMENT " Requires bats of
identical size");
@= implDef
batmtime_export str MTIMEbat_@1_@2(int *ret, int *l, int *r);
@@ -124,68 +129,18 @@ batmtime_export str MTIMEaccum_@1_@2(int
batmtime_export str MTIMEaccum_@1_@2_cst(int *ret, int *r, int *l, @1 *cst);
batmtime_export str MTIMEaccum_@1_cst_@2(int *ret, int *r, @1 *cst, int *l);
-@
- * @- Comparison operator implementation for temporal objects
- * The structure of this code is copied from the arithmetic scheme.
- * @-
-@= voidresultBAT
- bn = BATnew(TYPE_void, @1, BATcount(b));
- BATseqbase(bn, b->hseqbase);
- if (bn == NULL) {
- throw(MAL, @2, MAL_MALLOC_FAIL);
- }
- bn->hsorted = b->hsorted;
- bn->hrevsorted = b->hrevsorted;
- bn->tsorted = b->tsorted;
- bn->trevsorted = b->trevsorted;
- bn->H->nonil = 1;
+@c
+#define resultBAT(Type,Error)\
+ bn = BATnew(TYPE_void, Type, BATcount(b));\
+ BATseqbase(bn, b->hseqbase);\
+ if (bn == NULL) \
+ throw(MAL, Error, MAL_MALLOC_FAIL);\
+ bn->hsorted = b->hsorted;\
+ bn->hrevsorted = b->hrevsorted;\
+ bn->tsorted = b->tsorted;\
+ bn->trevsorted = b->trevsorted;\
+ bn->H->nonil = 1;\
bn->T->nonil = b->T->nonil;
-@= unarybaselineCode
-str MTIMEbat_@1_@2_@3(int *ret, int *l)
-{
- BAT *bn, *b;
- @1 *p, *q, *t;
- bit *o;
-
- if ((b = BATdescriptor(*l)) == NULL)
- throw(MAL, "batcalc.@2", RUNTIME_OBJECT_MISSING);
- @:voidresultBAT(@3,"batcalc.@2")@
-
- o = (bit*)Tloc(bn,BUNfirst(bn));
- p = (@1*)Tloc(b,BUNfirst(b));
- q = (@1*)Tloc(b,BUNlast(b));
- t = (@1*)Tloc(right,BUNfirst(right));
-
- BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
- BATaccessBegin(right, USE_TAIL, MMAP_SEQUENTIAL);
- if (b->T->nonil)
- for (;p<q; p++, t++, o++)
- @1@2(o,p,t);
- else
- for (;p<q; p++, t++, o++)
- if ( @1_isnil(*p))
- *o = bit_nil;
- else @1@2(o,p,t);
-
- BATaccessEnd(right, USE_TAIL, MMAP_SEQUENTIAL);
- BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
- if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ);
-
- BATsetcount(bn, BATcount(b));
- if (b->htype != bn->htype) {
- BAT *r = VIEWcreate(b,bn);
-
- BBPreleaseref(bn->batCacheid);
- bn = r;
- }
-
- bn->tsorted = 0;
- bn->trevsorted = 0;
- BATkey(BATmirror(bn),FALSE);
- BBPkeepref(*ret= bn->batCacheid);
- BBPreleaseref(b->batCacheid);
- return MAL_SUCCEED;
-}
@= baselineCode
str MTIMEbat_@1_@2(int *ret, int *l, int *r)
@@ -201,8 +156,9 @@ str MTIMEbat_@1_@2(int *ret, int *l, int
BBPreleaseref(b->batCacheid);
throw(MAL, "batcalc.@2", RUNTIME_OBJECT_MISSING);
}
- @:chkSize(b,right,batcalc.@2)@
- @:voidresultBAT(TYPE_bit,"batcalc.@2")@
+ if( BATcount(b) != BATcount(right) )
+ throw(MAL, "batcalc.@2", ILLEGAL_ARGUMENT " Requires bats of
identical size");
+ resultBAT(TYPE_bit,"batcalc.@2")
o = (bit*)Tloc(bn,BUNfirst(bn));
p = (@1*)Tloc(b,BUNfirst(b));
@@ -270,8 +226,10 @@ str MTIMEaccum_@1_@2(int *ret, int *d, i
BBPreleaseref(b->batCacheid);BBPreleaseref(right->batCacheid);
throw(MAL, "batcalc.@2", RUNTIME_OBJECT_MISSING);
}
- @:chkSize(bn,b,batcalc.@2)@
- @:chkSize(bn,right,batcalc.@2)@
+ if( BATcount(bn) != BATcount(b) )
+ throw(MAL, "batcalc.@2", ILLEGAL_ARGUMENT " Requires bats of
identical size");
+ if( BATcount(bn) != BATcount(right) )
+ throw(MAL, "batcalc.@2", ILLEGAL_ARGUMENT " Requires bats of
identical size");
o = (bit*)Tloc(bn,BUNfirst(bn));
p = (@1*)Tloc(b,BUNfirst(b));
@@ -322,7 +280,7 @@ str MTIMEbat_@1_@2_cst(int *ret, int *l,
if ((b = BATdescriptor(*l)) == NULL)
throw(MAL, "batcalc.@2", RUNTIME_OBJECT_MISSING);
- @:voidresultBAT(TYPE_bit,"batcalc.@2")@
+ resultBAT(TYPE_bit,"batcalc.@2")
BATsetcount(bn, BATcount(b));
if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ);
@@ -371,7 +329,7 @@ str MTIMEbat_@1_cst_@2(int *ret, @1 *cst
if ((b = BATdescriptor(*l)) == NULL)
throw(MAL, "batcalc.@2", RUNTIME_OBJECT_MISSING);
- @:voidresultBAT(TYPE_bit,"batcalc.@2")@
+ resultBAT(TYPE_bit,"batcalc.@2")
BATsetcount(bn, BATcount(b));
o = (bit*)Tloc(bn,BUNfirst(bn));
@@ -423,7 +381,8 @@ str MTIMEaccum_@1_@2_cst(int *ret, int *
@4;
throw(MAL, "batcalc.@2", RUNTIME_OBJECT_MISSING);
}
- @:chkSize(bn,b,batcalc.@2)@
+ if( BATcount(bn) != BATcount(b) )
+ throw(MAL, "batcalc.@2", ILLEGAL_ARGUMENT " Requires bats of
identical size");
o = (bit*)Tloc(bn,BUNfirst(bn));
p = (@1*)Tloc(b,BUNfirst(b));
@@ -464,7 +423,8 @@ str MTIMEaccum_@1_cst_@2(int *ret, int *
BBPreleaseref(bn->batCacheid);
throw(MAL, "batcalc.@2", RUNTIME_OBJECT_MISSING);
}
- @:chkSize(bn,b,batcalc.@2)@
+ if( BATcount(bn) != BATcount(b) )
+ throw(MAL, "batcalc.@2", ILLEGAL_ARGUMENT " Requires bats of
identical size");
o = (bit*)Tloc(bn,BUNfirst(bn));
p = (@1*)Tloc(b,BUNfirst(b));
@@ -493,9 +453,6 @@ str MTIMEaccum_@1_cst_@2(int *ret, int *
return MAL_SUCCEED;
}
-@
- * @-
- * The implementation section.
@= implCmpGrpDef
@:implDef(@1,EQ)@
@:implDef(@1,NEQ)@
@@ -532,20 +489,6 @@ batmtime_export str MTIMEunaryISNIL(int
@:baselineCode(timestamp,GT)@
@:baselineCode(timestamp,GE)@
-@= accumUnaryISNIL
-{
- @1 *p = (@1*)Tloc(b,BUNfirst(b));
- @1 *q = (@1*)Tloc(b,BUNlast(b));
- BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
- if (b->T->nonil){
- for(; p<q; p++, o++ )
- *o = FALSE;
- } else
- for(; p<q; p++, o++ )
- *o = @1_isnil(*p);
- BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
-}
-@
@c
str MTIMEunaryISNIL(int *ret, int *bid)
{
@@ -554,18 +497,41 @@ str MTIMEunaryISNIL(int *ret, int *bid)
if ((b = BATdescriptor(*bid)) == NULL)
throw(MAL, "batcalc.isnil", RUNTIME_OBJECT_MISSING);
- @:voidresultBAT(TYPE_bit,"batcalc.isnil")@
+ resultBAT(TYPE_bit,"batcalc.isnil")
o = (bit*)Tloc(bn,BUNfirst(bn));
+ BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL);
if ( BATttype(b) == TYPE_date) {
- @:accumUnaryISNIL(date)@
+ date *p = (date*)Tloc(b,BUNfirst(b));
+ date *q = (date*)Tloc(b,BUNlast(b));
+ if (b->T->nonil){
+ for(; p<q; p++, o++ )
+ *o = FALSE;
+ } else
+ for(; p<q; p++, o++ )
+ *o = date_isnil(*p);
} else
if ( BATttype(b) == TYPE_daytime) {
- @:accumUnaryISNIL(daytime)@
+ daytime *p = (daytime*)Tloc(b,BUNfirst(b));
+ daytime *q = (daytime*)Tloc(b,BUNlast(b));
+ if (b->T->nonil){
+ for(; p<q; p++, o++ )
+ *o = FALSE;
+ } else
+ for(; p<q; p++, o++ )
+ *o = daytime_isnil(*p);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list