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

Reply via email to