Changeset: c7a75f6903ed for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c7a75f6903ed
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        monetdb5/mal/mal_client.h
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_private.h
        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/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.powerpc64.int128
Branch: Apr2019
Log Message:

Implemented a print timeout.
Enable by using
call sys.setprinttimeout(seconds);
If a query doesn't finish within the specified number of seconds,
print a message to stderr (the logs) about which query is taking so
long.  This message repeats every so may seconds.


diffs (truncated from 579 to 300 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
@@ -10740,6 +10740,7 @@ Ready.
 [ "clients",   "setListing",   "pattern clients.setListing(flag:int):int ",    
"CLTsetListing;",       "Turn on/off echo of MAL instructions:\n\t1 - echo 
input,\n\t2 - show mal instruction,\n\t4 - show details of type resolutoin, 
\n\t8 - show binding information."       ]
 [ "clients",   "setPassword",  "pattern clients.setPassword(user:str, 
pass:str):void ",        "CLTsetPassword;",      "Set the password for the 
given user"   ]
 [ "clients",   "setScenario",  "pattern clients.setScenario(msg:str):str ",    
"CLTsetScenario;",      "Switch to other scenario handler, return previous 
one."        ]
+[ "clients",   "setprinttimeout",      "command 
clients.setprinttimeout(n:int):void ", "CLTsetPrintTimeout;",  "Print running 
query every so many seconds."    ]
 [ "clients",   "setsession",   "pattern clients.setsession(n:lng):void ",      
"CLTsetSessionTimeout;",        "Abort a session after  n seconds."     ]
 [ "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."   ]
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
@@ -15136,6 +15136,7 @@ Ready.
 [ "clients",   "setListing",   "pattern clients.setListing(flag:int):int ",    
"CLTsetListing;",       "Turn on/off echo of MAL instructions:\n\t1 - echo 
input,\n\t2 - show mal instruction,\n\t4 - show details of type resolutoin, 
\n\t8 - show binding information."       ]
 [ "clients",   "setPassword",  "pattern clients.setPassword(user:str, 
pass:str):void ",        "CLTsetPassword;",      "Set the password for the 
given user"   ]
 [ "clients",   "setScenario",  "pattern clients.setScenario(msg:str):str ",    
"CLTsetScenario;",      "Switch to other scenario handler, return previous 
one."        ]
+[ "clients",   "setprinttimeout",      "command 
clients.setprinttimeout(n:int):void ", "CLTsetPrintTimeout;",  "Print running 
query every so many seconds."    ]
 [ "clients",   "setsession",   "pattern clients.setsession(n:lng):void ",      
"CLTsetSessionTimeout;",        "Abort a session after  n seconds."     ]
 [ "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."   ]
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
@@ -913,6 +913,7 @@ str CLTripemd160sum(str *ret, str *pw);
 str CLTsessions(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CLTsetListing(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 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);
diff --git a/monetdb5/mal/mal_client.h b/monetdb5/mal/mal_client.h
--- a/monetdb5/mal/mal_client.h
+++ b/monetdb5/mal/mal_client.h
@@ -86,6 +86,7 @@ typedef struct CLIENT {
        lng             session;        /* usec since start of server */
        lng         qtimeout;   /* query abort after x usec*/
        lng             stimeout;       /* session abort after x usec */
+       lng         lastprint;  /* when we last printed the query */
        /*
         * Communication channels for the interconnect are stored here.
         * It is perfectly legal to have a client without input stream.
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -19,6 +19,14 @@
 #include "mal_type.h"
 #include "mal_private.h"
 
+static lng qptimeout = 0; /* how often we print still running queries (usec) */
+static MT_Lock qptimeoutLock = MT_LOCK_INITIALIZER("qptimeoutLock");
+
+void
+setqptimeout(lng usecs)
+{
+       qptimeout = usecs;
+}
 
 inline
 ptr getArgReference(MalStkPtr stk, InstrPtr pci, int k)
@@ -289,6 +297,7 @@ str runMAL(Client cntxt, MalBlkPtr mb, M
         * enough
         */
        cntxt->lastcmd= time(0);
+       cntxt->lastprint = GDKusec();
        if (env != NULL) {
                int res = 1;
                stk = env;
@@ -551,6 +560,18 @@ str runMALsequence(Client cntxt, MalBlkP
                        lastcheck = runtimeProfile.ticks;
                }
 
+               if (qptimeout > 0) {
+                       MT_lock_set(&qptimeoutLock);
+                       lng t = GDKusec();
+                       if (cntxt->lastprint + qptimeout < t) {
+                               fprintf(stderr, "#%s: query already running 
"LLFMT"s: %.200s\n",
+                                               cntxt->mythread->name, (t - 
cntxt->lastprint)/1000000,
+                                               cntxt->query);
+                               cntxt->lastprint = t;
+                       }
+                       MT_lock_unset(&qptimeoutLock);
+               }
+
                /* The interpreter loop
                 * The interpreter is geared towards execution a MAL
                 * procedure together with all its descendant
diff --git a/monetdb5/mal/mal_private.h b/monetdb5/mal/mal_private.h
--- a/monetdb5/mal/mal_private.h
+++ b/monetdb5/mal/mal_private.h
@@ -48,6 +48,9 @@
 
 __hidden extern MT_Lock mal_namespaceLock;
 
+__hidden void setqptimeout(lng usecs)
+       __attribute__((__visibility__("hidden")));
+
 __hidden void mdbInit(void)
        __attribute__((__visibility__("hidden")));
 __hidden void mdbExit(void)
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
@@ -367,6 +367,17 @@ CLTgetTimeout(Client cntxt, MalBlkPtr mb
 }
 
 str
+CLTsetPrintTimeout(void *ret, int *secs)
+{
+       (void) ret;
+       if (is_int_nil(*secs))
+               setqptimeout(0);
+       else
+               setqptimeout((lng) *secs * 1000000);
+       return MAL_SUCCEED;
+}
+
+str
 CLTwakeup(void *ret, int *id)
 {
     (void) ret;     /* fool compiler */
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
@@ -32,6 +32,7 @@ mal_export str CLTsuspend(Client cntxt, 
 mal_export str CLTsetTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 mal_export str CLTsetSessionTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 mal_export str CLTgetTimeout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+mal_export str CLTsetPrintTimeout(void *ret, int *secs);
 mal_export str CLTwakeup(void *ret, int *id);
 
 mal_export str CLTshutdown(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
@@ -88,6 +88,10 @@ comment "A query is aborted after q mill
 The session timeout aborts the connection after spending too
 many seconds on query processing.";
 
+command setprinttimeout(n:int):void
+address CLTsetPrintTimeout
+comment "Print running query every so many seconds.";
+
 pattern shutdown(delay:int):str
 address CLTshutdown;
 pattern shutdown(delay:int, forced:bit):str
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
@@ -1553,6 +1553,12 @@ sql_update_apr2019(Client c, mvc *sql)
                        "grant execute on function sys.date_trunc(string, 
timestamp) to public;\n"
                        "update sys.functions set system = true where schema_id 
= (select id from sys.schemas where name = 'sys') and name = 'date_trunc' and 
type = %d;\n", F_FUNC);
 
+       /* 22_clients.sql */
+       pos += snprintf(buf + pos, bufsize - pos,
+                       "create procedure sys.setprinttimeout(\"timeout\" 
integer)\n"
+                       "external name clients.setprinttimeout;\n"
+                       "update sys.functions set system = true where schema_id 
= (select id from sys.schemas where name = 'sys') and name = 'setprinttimeout' 
and type = %d;\n", F_PROC);
+
        /* 26_sysmon.sql */
        pos += snprintf(buf + pos, bufsize - pos,
                        "grant execute on function sys.queue to public;\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
@@ -30,3 +30,6 @@ create procedure sys.settimeout("query" 
        external name clients.settimeout;
 create procedure sys.setsession("timeout" bigint)
        external name clients.setsession;
+
+create procedure sys.setprinttimeout("timeout" integer)
+       external name clients.setprinttimeout;
diff --git a/sql/test/Tests/systemfunctions.stable.out 
b/sql/test/Tests/systemfunctions.stable.out
--- a/sql/test/Tests/systemfunctions.stable.out
+++ b/sql/test/Tests/systemfunctions.stable.out
@@ -1500,7 +1500,7 @@ Ready.
 [ "sys",       "querylog_catalog",     5,      "clob", ""      ]
 [ "sys",       "querylog_catalog",     6,      "int",  ""      ]
 [ "sys",       "querylog_catalog",     7,      "bigint",       ""      ]
-[ "sys",       "querylog_enable",      0,      "smallint",     "create 
procedure sys.querylog_enable(threshold smallint)\nexternal name 
sql.querylog_enable_threshold;"        ]
+[ "sys",       "querylog_enable",      0,      "int",  "create procedure 
sys.querylog_enable(threshold integer)\nexternal name sql.querylog_enable;"   ]
 [ "sys",       "queue",        0,      "bigint",       "create function 
sys.queue()\nreturns table(\n qtag bigint,\n \"user\" string,\n started 
timestamp,\n estimate timestamp,\n progress int,\n status string,\n tag oid,\n 
query string\n)\nexternal name sql.sysmon_queue;"       ]
 [ "sys",       "queue",        1,      "clob", ""      ]
 [ "sys",       "queue",        2,      "timestamp",    ""      ]
@@ -3237,6 +3237,7 @@ Ready.
 [ "sys",       "setmasklen",   0,      "inet", "create function \"setmasklen\" 
(p inet, mask int) returns inet\n external name inet.\"setmasklen\";"   ]
 [ "sys",       "setmasklen",   1,      "inet", ""      ]
 [ "sys",       "setmasklen",   2,      "int",  ""      ]
+[ "sys",       "setprinttimeout",      0,      "int",  "create procedure 
sys.setprinttimeout(\"timeout\" integer)\n external name 
clients.setprinttimeout;"    ]
 [ "sys",       "setsession",   0,      "bigint",       "create procedure 
sys.setsession(\"timeout\" bigint)\n external name clients.setsession;"       ]
 [ "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;"     ]
diff --git a/sql/test/Tests/systemfunctions.stable.out.int128 
b/sql/test/Tests/systemfunctions.stable.out.int128
--- a/sql/test/Tests/systemfunctions.stable.out.int128
+++ b/sql/test/Tests/systemfunctions.stable.out.int128
@@ -1601,7 +1601,7 @@ Ready.
 [ "sys",       "querylog_catalog",     5,      "clob", ""      ]
 [ "sys",       "querylog_catalog",     6,      "int",  ""      ]
 [ "sys",       "querylog_catalog",     7,      "bigint",       ""      ]
-[ "sys",       "querylog_enable",      0,      "smallint",     "create 
procedure sys.querylog_enable(threshold smallint)\nexternal name 
sql.querylog_enable_threshold;"        ]
+[ "sys",       "querylog_enable",      0,      "int",  "create procedure 
sys.querylog_enable(threshold integer)\nexternal name sql.querylog_enable;"   ]
 [ "sys",       "queue",        0,      "bigint",       "create function 
sys.queue()\nreturns table(\n qtag bigint,\n \"user\" string,\n started 
timestamp,\n estimate timestamp,\n progress int,\n status string,\n tag oid,\n 
query string\n)\nexternal name sql.sysmon_queue;"       ]
 [ "sys",       "queue",        1,      "clob", ""      ]
 [ "sys",       "queue",        2,      "timestamp",    ""      ]
@@ -3635,6 +3635,7 @@ Ready.
 [ "sys",       "setmasklen",   0,      "inet", "create function \"setmasklen\" 
(p inet, mask int) returns inet\n external name inet.\"setmasklen\";"   ]
 [ "sys",       "setmasklen",   1,      "inet", ""      ]
 [ "sys",       "setmasklen",   2,      "int",  ""      ]
+[ "sys",       "setprinttimeout",      0,      "int",  "create procedure 
sys.setprinttimeout(\"timeout\" integer)\n external name 
clients.setprinttimeout;"    ]
 [ "sys",       "setsession",   0,      "bigint",       "create procedure 
sys.setsession(\"timeout\" bigint)\n external name clients.setsession;"       ]
 [ "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;"     ]
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -5862,6 +5862,9 @@ returns timestamp
 external name sql.date_trunc;
 grant execute on function sys.date_trunc(string, timestamp) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'date_trunc' and type = 1;
+create procedure sys.setprinttimeout("timeout" integer)
+external name clients.setprinttimeout;
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'setprinttimeout' and type = 2;
 grant execute on function sys.queue to public;
 grant select on sys.queue to public;
 ALTER TABLE sys.keywords SET READ WRITE;
diff --git 
a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
--- 
a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
+++ 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
@@ -5862,6 +5862,9 @@ returns timestamp
 external name sql.date_trunc;
 grant execute on function sys.date_trunc(string, timestamp) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'date_trunc' and type = 1;
+create procedure sys.setprinttimeout("timeout" integer)
+external name clients.setprinttimeout;
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'setprinttimeout' and type = 2;
 grant execute on function sys.queue to public;
 grant select on sys.queue to public;
 ALTER TABLE sys.keywords SET READ WRITE;
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
@@ -5072,6 +5072,9 @@ returns timestamp
 external name sql.date_trunc;
 grant execute on function sys.date_trunc(string, timestamp) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'date_trunc' and type = 1;
+create procedure sys.setprinttimeout("timeout" integer)
+external name clients.setprinttimeout;
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'setprinttimeout' and type = 2;
 grant execute on function sys.queue to public;
 grant select on sys.queue to public;
 ALTER TABLE sys.keywords SET READ WRITE;
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
@@ -5072,6 +5072,9 @@ returns timestamp
 external name sql.date_trunc;
 grant execute on function sys.date_trunc(string, timestamp) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'date_trunc' and type = 1;
+create procedure sys.setprinttimeout("timeout" integer)
+external name clients.setprinttimeout;
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'setprinttimeout' and type = 2;
 grant execute on function sys.queue to public;
 grant select on sys.queue to public;
 ALTER TABLE sys.keywords SET READ WRITE;
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
@@ -5913,6 +5913,9 @@ returns timestamp
 external name sql.date_trunc;
 grant execute on function sys.date_trunc(string, timestamp) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'date_trunc' and type = 1;
+create procedure sys.setprinttimeout("timeout" integer)
+external name clients.setprinttimeout;
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'setprinttimeout' and type = 2;
 grant execute on function sys.queue to public;
 grant select on sys.queue to public;
 ALTER TABLE sys.keywords SET READ WRITE;
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
@@ -5072,6 +5072,9 @@ returns timestamp
 external name sql.date_trunc;
 grant execute on function sys.date_trunc(string, timestamp) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'date_trunc' and type = 1;
+create procedure sys.setprinttimeout("timeout" integer)
+external name clients.setprinttimeout;
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'setprinttimeout' and type = 2;
 grant execute on function sys.queue to public;
 grant select on sys.queue to public;
 ALTER TABLE sys.keywords SET READ WRITE;
diff --git 
a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
@@ -5913,6 +5913,9 @@ returns timestamp
 external name sql.date_trunc;
 grant execute on function sys.date_trunc(string, timestamp) to public;
 update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name = 'date_trunc' and type = 1;
+create procedure sys.setprinttimeout("timeout" integer)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to