Changeset: 16163c504a2c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/16163c504a2c
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
monetdb5/modules/kernel/alarm.c
Branch: default
Log Message:
Removed alarm.sleep with a BAT argument.
diffs (163 lines):
diff --git a/clients/Tests/MAL-signatures-hge.test
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -3364,11 +3364,6 @@ unsafe pattern alarm.sleep(X_0:any_1):vo
ALARMsleep;
Sleep a few milliseconds
alarm
-sleep
-unsafe pattern alarm.sleep(X_0:bat[:any_1]):bat[:any_1]
-ALARMsleep;
-Sleep a few milliseconds and return the slept value
-alarm
time
unsafe command alarm.time():int
ALARMtime;
diff --git a/clients/Tests/MAL-signatures.test
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -2799,11 +2799,6 @@ unsafe pattern alarm.sleep(X_0:any_1):vo
ALARMsleep;
Sleep a few milliseconds
alarm
-sleep
-unsafe pattern alarm.sleep(X_0:bat[:any_1]):bat[:any_1]
-ALARMsleep;
-Sleep a few milliseconds and return the slept value
-alarm
time
unsafe command alarm.time():int
ALARMtime;
diff --git a/monetdb5/modules/kernel/alarm.c b/monetdb5/modules/kernel/alarm.c
--- a/monetdb5/modules/kernel/alarm.c
+++ b/monetdb5/modules/kernel/alarm.c
@@ -38,7 +38,8 @@ ALARMusec(lng *ret)
#define SLEEP_SINGLE(TPE)
\
do {
\
- TPE *res = (TPE*) getArgReference(stk, pci, 0), *msecs = (TPE*)
getArgReference(stk,pci,1); \
+ TPE *res = getArgReference_##TPE(stk, pci, 0);
\
+ const TPE *msecs = getArgReference_##TPE(stk,pci,1);
\
if (is_##TPE##_nil(*msecs))
\
throw(MAL, "alarm.sleep", "NULL values not allowed for
sleeping time"); \
if (*msecs < 0)
\
@@ -47,97 +48,24 @@ ALARMusec(lng *ret)
*res = *msecs;
\
} while (0)
-#define SLEEP_MULTI(TPE)
\
- do {
\
- for (i = 0; i < j ; i++) {
\
- if (is_##TPE##_nil(bb[i])) {
\
- bat_iterator_end(&bi);
\
- BBPreclaim(r);
\
- BBPunfix(b->batCacheid);
\
- throw(MAL, "alarm.sleep", "NULL values not
allowed for sleeping time"); \
- }
\
- if (bb[i] < 0) {
\
- bat_iterator_end(&bi);
\
- BBPreclaim(r);
\
- BBPunfix(b->batCacheid);
\
- throw(MAL, "alarm.sleep", "Cannot sleep for a
negative time"); \
- }
\
- }
\
- for (i = 0; i < j ; i++) {
\
- MT_sleep_ms((unsigned int) bb[i]);
\
- rb[i] = bb[i];
\
- }
\
- } while (0)
-
static str
ALARMsleep(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- BAT *r = NULL, *b = NULL;
- int *restrict rb, *restrict bb, tpe;
- BUN i, j;
-
(void) cntxt;
- if (getArgType(mb, pci, 0) != TYPE_void
- && isaBatType(getArgType(mb, pci, 1))) {
- bat *res = getArgReference_bat(stk, pci, 0);
- bat *bid = getArgReference_bat(stk, pci, 1);
- tpe = getArgType(mb, pci, 1);
-
- if (!(b = BATdescriptor(*bid)))
- throw(MAL, "alarm.sleep",
- SQLSTATE(HY005) "Cannot access column
descriptor");
-
- BATiter bi = bat_iterator(b);
- j = bi.count;
- bb = bi.base;
-
- if (!(r = COLnew(0, tpe, j, TRANSIENT))) {
- bat_iterator_end(&bi);
- BBPunfix(b->batCacheid);
- throw(MAL, "alarm.sleep", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
- }
- rb = Tloc(r, 0);
-
- switch (tpe) {
- case TYPE_bte:
- SLEEP_MULTI(bte);
- break;
- case TYPE_sht:
- SLEEP_MULTI(sht);
- break;
- case TYPE_int:
- SLEEP_MULTI(int);
- break;
- default:{
- bat_iterator_end(&bi);
- BBPreclaim(r);
- BBPunfix(b->batCacheid);
- throw(MAL, "alarm.sleep",
- SQLSTATE(42000) "Sleep function not available
for type %s",
- ATOMname(tpe));
- }
- }
- bat_iterator_end(&bi);
-
- BBPunfix(b->batCacheid);
- *res = r->batCacheid;
- BBPkeepref(r);
- } else {
- switch (getArgType(mb, pci, 1)) {
- case TYPE_bte:
- SLEEP_SINGLE(bte);
- break;
- case TYPE_sht:
- SLEEP_SINGLE(sht);
- break;
- case TYPE_int:
- SLEEP_SINGLE(int);
- break;
- default:
- throw(MAL, "alarm.sleep",
- SQLSTATE(42000) "Sleep function not available
for type %s",
- ATOMname(getArgType(mb, pci, 1)));
- }
+ switch (getArgType(mb, pci, 1)) {
+ case TYPE_bte:
+ SLEEP_SINGLE(bte);
+ break;
+ case TYPE_sht:
+ SLEEP_SINGLE(sht);
+ break;
+ case TYPE_int:
+ SLEEP_SINGLE(int);
+ break;
+ default:
+ throw(MAL, "alarm.sleep",
+ SQLSTATE(42000) "Sleep function not available for
type %s",
+ ATOMname(getArgType(mb, pci, 1)));
}
return MAL_SUCCEED;
}
@@ -183,7 +111,6 @@ ALARMtime(int *res)
mel_func alarm_init_funcs[] = {
pattern("alarm", "sleep", ALARMsleep, true, "Sleep a few milliseconds",
args(1,2, arg("",void),argany("msecs",1))),
pattern("alarm", "sleep", ALARMsleep, true, "Sleep a few milliseconds and
return the slept value", args(1,2, argany("",1),argany("msecs",1))),
- pattern("alarm", "sleep", ALARMsleep, true, "Sleep a few milliseconds and
return the slept value", args(1,2, batargany("",1),batargany("msecs",1))),
command("alarm", "usec", ALARMusec, true, "Return time since Jan 1, 1970 in
microseconds.", args(1,1, arg("",lng))),
command("alarm", "time", ALARMtime, true, "Return time since program start in
milliseconds.", args(1,1, arg("",int))),
command("alarm", "epoch", ALARMepoch, true, "Return time since Jan 1, 1970 in
seconds.", args(1,1, arg("",int))),
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]