Changeset: 08e663655645 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=08e663655645
Modified Files:
        monetdb5/modules/mal/clients.c
Branch: qcancel
Log Message:

add mal timeout func in microseconds


diffs (53 lines):

diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c
--- a/monetdb5/modules/mal/clients.c
+++ b/monetdb5/modules/mal/clients.c
@@ -466,7 +466,7 @@ CLTsetTimeout(Client cntxt, MalBlkPtr mb
        return msg;
 }
 
-/* set session time out based in seconds, converted into microseconds */
+/* set query timeout based in seconds, converted into microseconds */
 static str
 CLTqueryTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
@@ -509,6 +509,32 @@ CLTqueryTimeout(Client cntxt, MalBlkPtr 
        return msg;
 }
 
+// set query timeout based in microseconds
+static str
+CLTqueryTimeoutMicro(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       str msg = MAL_SUCCEED;
+       int idx = cntxt->idx;
+       lng qto = *getArgReference_lng(stk,pci,1);
+       (void) mb;
+
+       if (is_lng_nil(qto))
+               throw(MAL,"clients.queryTimeout","Query timeout cannot be 
NULL");
+       if( qto < 0)
+               throw(MAL,"clients.queryTimeout","Query timeout should be >= 
0");
+
+       MT_lock_set(&mal_contextLock);
+       if (mal_clients[idx].mode == FREECLIENT)
+               msg = createException(MAL,"clients.queryTimeout","Session not 
active anymore");
+       else {
+               mal_clients[idx].querytimeout = qto;
+               QryCtx *qry_ctx = MT_thread_get_qry_ctx();
+               qry_ctx->querytimeout = qto;
+       }
+       MT_lock_unset(&mal_contextLock);
+       return msg;
+}
+
 /* Set the current session timeout in seconds */
 static str
 CLTsessionTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
@@ -989,6 +1015,7 @@ mel_func clients_init_funcs[] = {
  pattern("clients", "setsession", CLTsetSessionTimeout, false, "Abort a 
session after  n seconds.", args(1,2, arg("",void),arg("n",lng))),
  pattern("clients", "settimeout", CLTsetTimeout, false, "Abort a query after  
n seconds.", args(1,2, arg("",void),arg("n",lng))),
  pattern("clients", "settimeout", CLTsetTimeout, false, "Abort a query after q 
seconds (q=0 means run undisturbed).\nThe session timeout aborts the connection 
after spending too\nmany seconds on query processing.", args(1,3, 
arg("",void),arg("q",lng),arg("s",lng))),
+ pattern("clients", "setQryTimeoutMicro", CLTqueryTimeoutMicro, false, "", 
args(1,2, arg("",void),arg("n",lng))),
  pattern("clients", "setquerytimeout", CLTqueryTimeout, false, "", args(1,2, 
arg("",void),arg("n",int))),
  pattern("clients", "setquerytimeout", CLTqueryTimeout, false, "", args(1,3, 
arg("",void),arg("sid",bte),arg("n",int))),
  pattern("clients", "setquerytimeout", CLTqueryTimeout, false, "", args(1,3, 
arg("",void),arg("sid",sht),arg("n",int))),
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to