Changeset: 9aea39d48708 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9aea39d48708 Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out monetdb5/modules/mal/clients.c monetdb5/modules/mal/clients.h monetdb5/modules/mal/clients.mal sql/backends/monet5/sql_upgrades.c sql/scripts/22_clients.sql sql/test/sys-schema/Tests/systemfunctions.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 Branch: default Log Message:
Brought back sys.settimeout and sys.setsession procedures although they are deprecated This was required in order to not break existing JDBC and OBDC connections which require them. diffs (206 lines): diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -10776,10 +10776,13 @@ stdout of test 'MAL-signatures` in direc [ "clients", "setquerytimeout", "pattern clients.setquerytimeout(sid:bte, n:int):void ", "CLTqueryTimeout;", "" ] [ "clients", "setquerytimeout", "pattern clients.setquerytimeout(sid:int, n:int):void ", "CLTqueryTimeout;", "A query is aborted after q seconds (q=0 means run undisturbed)." ] [ "clients", "setquerytimeout", "pattern clients.setquerytimeout(sid:sht, n:int):void ", "CLTqueryTimeout;", "" ] +[ "clients", "setsession", "pattern clients.setsession(n:lng):void ", "CLTsetSessionTimeout;", "Abort a session after n seconds." ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(n:int):void ", "CLTsessionTimeout;", "" ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(sid:bte, n:int):void ", "CLTsessionTimeout;", "" ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(sid:int, n:int):void ", "CLTsessionTimeout;", "Set the session timeout for a particulat session id" ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(sid:sht, n:int):void ", "CLTsessionTimeout;", "" ] +[ "clients", "settimeout", "pattern clients.settimeout(n:lng):void ", "CLTsetTimeout;", "Abort a query after n seconds." ] +[ "clients", "settimeout", "pattern clients.settimeout(q:lng, s:lng):void ", "CLTsetTimeout;", "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." ] [ "clients", "setworkerlimit", "pattern clients.setworkerlimit(n:int):void ", "CLTsetworkerlimit;", "" ] [ "clients", "setworkerlimit", "pattern clients.setworkerlimit(sid:int, n:int):void ", "CLTsetworkerlimit;", "Limit the number of worker threads per query" ] [ "clients", "sha1sum", "command clients.sha1sum(pw:str):str ", "CLTsha1sum;", "Return hex string representation of the SHA-1 hash of the given string" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -15164,10 +15164,13 @@ stdout of test 'MAL-signatures` in direc [ "clients", "setquerytimeout", "pattern clients.setquerytimeout(sid:bte, n:int):void ", "CLTqueryTimeout;", "" ] [ "clients", "setquerytimeout", "pattern clients.setquerytimeout(sid:int, n:int):void ", "CLTqueryTimeout;", "A query is aborted after q seconds (q=0 means run undisturbed)." ] [ "clients", "setquerytimeout", "pattern clients.setquerytimeout(sid:sht, n:int):void ", "CLTqueryTimeout;", "" ] +[ "clients", "setsession", "pattern clients.setsession(n:lng):void ", "CLTsetSessionTimeout;", "Abort a session after n seconds." ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(n:int):void ", "CLTsessionTimeout;", "" ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(sid:bte, n:int):void ", "CLTsessionTimeout;", "" ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(sid:int, n:int):void ", "CLTsessionTimeout;", "Set the session timeout for a particulat session id" ] [ "clients", "setsessiontimeout", "pattern clients.setsessiontimeout(sid:sht, n:int):void ", "CLTsessionTimeout;", "" ] +[ "clients", "settimeout", "pattern clients.settimeout(n:lng):void ", "CLTsetTimeout;", "Abort a query after n seconds." ] +[ "clients", "settimeout", "pattern clients.settimeout(q:lng, s:lng):void ", "CLTsetTimeout;", "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." ] [ "clients", "setworkerlimit", "pattern clients.setworkerlimit(n:int):void ", "CLTsetworkerlimit;", "" ] [ "clients", "setworkerlimit", "pattern clients.setworkerlimit(sid:int, n:int):void ", "CLTsetworkerlimit;", "Limit the number of worker threads per query" ] [ "clients", "sha1sum", "command clients.sha1sum(pw:str):str ", "CLTsha1sum;", "Return hex string representation of the SHA-1 hash of the given string" ] diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -939,6 +939,8 @@ str CLTsetListing(Client cntxt, MalBlkPt str CLTsetPassword(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str CLTsetPrintTimeout(void *ret, int *secs); str CLTsetScenario(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str CLTsetSessionTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str CLTsetTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str CLTsetmemorylimit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str CLTsetoptimizer(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str CLTsetworkerlimit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); 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 @@ -364,6 +364,50 @@ CLTwakeup(void *ret, int *id) return MCawakeClient(*id); } +/* Set session time out based in seconds. As of December 2019, this function is deprecated */ +str +CLTsetSessionTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + lng sto; + int idx = cntxt->idx; + + (void) mb; + if( idx < 0 || idx > MAL_MAXCLIENTS) + throw(MAL,"clients.setsession","Illegal session id %d", idx); + if (mal_clients[idx].mode == FREECLIENT) + throw(MAL,"clients.setsession","Session not active anymore"); + sto = *getArgReference_lng(stk,pci,1); + if (sto < 0) + throw(MAL,"clients.setsession","Session timeout should be >= 0"); + mal_clients[idx].sessiontimeout = sto * 1000000; + return MAL_SUCCEED; +} + +/* Set the current query timeout in seconds. As of December 2019, this function is deprecated */ +str +CLTsetTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + lng qto,sto; + int idx = cntxt->idx; + + (void) mb; + if( idx < 0 || idx > MAL_MAXCLIENTS) + throw(MAL,"clients.settimeout","Illegal session id %d", idx); + if (mal_clients[idx].mode == FREECLIENT) + throw(MAL,"clients.settimeout","Session not active anymore"); + qto = *getArgReference_lng(stk,pci,1); + if (qto < 0) + throw(MAL,"clients.settimeout","Query timeout should be >= 0"); + if (pci->argc == 3) { + sto = *getArgReference_lng(stk,pci,2); + if( sto < 0) + throw(MAL,"clients.settimeout","Session timeout should be >= 0"); + mal_clients[idx].sessiontimeout = sto * 1000000; + } + mal_clients[idx].querytimeout = qto * 1000000; + return MAL_SUCCEED; +} + /* set session time out based in seconds, converted into microseconds */ str CLTqueryTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) diff --git a/monetdb5/modules/mal/clients.h b/monetdb5/modules/mal/clients.h --- a/monetdb5/modules/mal/clients.h +++ b/monetdb5/modules/mal/clients.h @@ -26,6 +26,8 @@ mal_export str CLTLogin(bat *ret, bat *n mal_export str CLTInfo(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str CLTstop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str CLTsuspend(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +mal_export str CLTsetSessionTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +mal_export str CLTsetTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str CLTqueryTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str CLTsessionTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str CLTsetoptimizer(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/monetdb5/modules/mal/clients.mal b/monetdb5/modules/mal/clients.mal --- a/monetdb5/modules/mal/clients.mal +++ b/monetdb5/modules/mal/clients.mal @@ -60,6 +60,22 @@ pattern getprofile()(opt:str, q:int, s:i address CLTgetProfile comment "Retrieve the profile settings for a client"; +# As of December 2019, the pattern setsession is deprecated, use setsessiontimeout +pattern setsession(n:lng):void +address CLTsetSessionTimeout +comment "Abort a session after n seconds."; + +# As of December 2019, the pattern settimeout is deprecated, use setquerytimeout +pattern settimeout(n:lng):void +address CLTsetTimeout +comment "Abort a query after n seconds."; + +pattern settimeout(q:lng,s:lng):void +address CLTsetTimeout +comment "Abort a query after q seconds (q=0 means run undisturbed). +The session timeout aborts the connection after spending too +many seconds on query processing."; + # set properties of others pattern setquerytimeout(n:int):void address CLTqueryTimeout; diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -2374,10 +2374,6 @@ sql_update_default(Client c, mvc *sql, c "create view sys.sessions as select * from sys.sessions();\n"); pos += snprintf(buf + pos, bufsize - pos, - "drop procedure sys.settimeout(bigint);\n" - "drop procedure sys.settimeout(bigint,bigint);\n" - "drop procedure sys.setsession(bigint);\n" - "create procedure sys.setoptimizer(\"optimizer\" string)\n" " external name clients.setoptimizer;\n" "create procedure sys.setquerytimeout(\"query\" int)\n" diff --git a/sql/scripts/22_clients.sql b/sql/scripts/22_clients.sql --- a/sql/scripts/22_clients.sql +++ b/sql/scripts/22_clients.sql @@ -34,6 +34,16 @@ external name sql.shutdown; create procedure sys.shutdown(delay tinyint, force bool) external name sql.shutdown; +-- control the query and session time out. +-- As of December 2019, the procedures settimeout and setsession are deprecated. +-- Use setquerytimeout and setsessiontimeout instead. +create procedure sys.settimeout("query" bigint) + external name clients.settimeout; +create procedure sys.settimeout("query" bigint, "session" bigint) + external name clients.settimeout; +create procedure sys.setsession("timeout" bigint) + external name clients.setsession; + -- control the session properties session time out for the current user. create procedure sys.setoptimizer("optimizer" string) external name clients.setoptimizer; diff --git a/sql/test/sys-schema/Tests/systemfunctions.stable.out b/sql/test/sys-schema/Tests/systemfunctions.stable.out --- a/sql/test/sys-schema/Tests/systemfunctions.stable.out +++ b/sql/test/sys-schema/Tests/systemfunctions.stable.out @@ -3303,9 +3303,13 @@ stdout of test 'systemfunctions` in dire [ "sys", "setquerytimeout", 0, "int", "create procedure sys.setquerytimeout(\"query\" int)\n external name clients.setquerytimeout;" ] [ "sys", "setquerytimeout", 0, "int", "create procedure sys.setquerytimeout(\"sessionid\" int, \"query\" int)\n external name clients.setquerytimeout;" ] [ "sys", "setquerytimeout", 1, "int", "" ] +[ "sys", "setsession", 0, "bigint", "create procedure sys.setsession(\"timeout\" bigint)\n external name clients.setsession;" ] [ "sys", "setsessiontimeout", 0, "int", "create procedure sys.setsessiontimeout(\"timeout\" int)\n external name clients.setsessiontimeout;" ] [ "sys", "setsessiontimeout", 0, "int", "create procedure sys.setsessiontimeout(\"sessionid\" int, \"query\" int)\n external name clients.setsessiontimeout;" ] [ "sys", "setsessiontimeout", 1, "int", "" ] +[ "sys", "settimeout", 0, "bigint", "create procedure sys.settimeout(\"query\" bigint)\n external name clients.settimeout;" ] +[ "sys", "settimeout", 0, "bigint", "create procedure sys.settimeout(\"query\" bigint, \"session\" bigint)\n external name clients.settimeout;" ] +[ "sys", "settimeout", 1, "bigint", "" ] [ "sys", "setworkerlimit", 0, "int", "create procedure sys.setworkerlimit(\"limit\" int)\n external name clients.setworkerlimit;" ] [ "sys", "setworkerlimit", 0, "int", "create procedure sys.setworkerlimit(\"sessionid\" int, \"limit\" int)\n external name clients.setworkerlimit;" ] [ "sys", "setworkerlimit", 1, "int", "" ] diff --git a/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 b/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 --- a/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 +++ b/sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 @@ -3702,9 +3702,13 @@ stdout of test 'systemfunctions` in dire [ "sys", "setquerytimeout", 0, "int", "create procedure sys.setquerytimeout(\"query\" int)\n external name clients.setquerytimeout;" ] [ "sys", "setquerytimeout", 0, "int", "create procedure sys.setquerytimeout(\"sessionid\" int, \"query\" int)\n external name clients.setquerytimeout;" ] [ "sys", "setquerytimeout", 1, "int", "" ] +[ "sys", "setsession", 0, "bigint", "create procedure sys.setsession(\"timeout\" bigint)\n external name clients.setsession;" ] [ "sys", "setsessiontimeout", 0, "int", "create procedure sys.setsessiontimeout(\"timeout\" int)\n external name clients.setsessiontimeout;" ] [ "sys", "setsessiontimeout", 0, "int", "create procedure sys.setsessiontimeout(\"sessionid\" int, \"query\" int)\n external name clients.setsessiontimeout;" ] [ "sys", "setsessiontimeout", 1, "int", "" ] +[ "sys", "settimeout", 0, "bigint", "create procedure sys.settimeout(\"query\" bigint)\n external name clients.settimeout;" ] +[ "sys", "settimeout", 0, "bigint", "create procedure sys.settimeout(\"query\" bigint, \"session\" bigint)\n external name clients.settimeout;" ] +[ "sys", "settimeout", 1, "bigint", "" ] [ "sys", "setworkerlimit", 0, "int", "create procedure sys.setworkerlimit(\"limit\" int)\n external name clients.setworkerlimit;" ] [ "sys", "setworkerlimit", 0, "int", "create procedure sys.setworkerlimit(\"sessionid\" int, \"limit\" int)\n external name clients.setworkerlimit;" ] [ "sys", "setworkerlimit", 1, "int", "" ] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list