Changeset: 128ffa7e3973 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=128ffa7e3973
Modified Files:
        monetdb5/modules/mal/sysmon.c
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/26_sysmon.sql
        sql/test/Users/Tests/sessioncontrol.stable.err
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
Branch: linear-hashing
Log Message:

Grant sys.pause, sys.resume and sys.stop to the public. Users can manipulate 
their own queries


diffs (truncated from 326 to 300 lines):

diff --git a/monetdb5/modules/mal/sysmon.c b/monetdb5/modules/mal/sysmon.c
--- a/monetdb5/modules/mal/sysmon.c
+++ b/monetdb5/modules/mal/sysmon.c
@@ -129,7 +129,9 @@ SYSMONqueue(Client cntxt, MalBlkPtr mb, 
 
 str
 SYSMONpause(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{      lng i, tag = 0;
+{
+       bool set = false;
+       lng tag = 0;
        (void) mb;
        (void) stk;
        (void) pci;
@@ -143,24 +145,29 @@ SYSMONpause(Client cntxt, MalBlkPtr mb, 
        case TYPE_hge:
                /* Does this happen?
                 * If so, what do we have TODO ? */
-               throw(MAL, "SYSMONpause", "type hge not handled, yet");
+               throw(MAL, "SYSMONpause", SQLSTATE(42000) "type hge not 
handled, yet");
 #endif
        default:
-               throw(MAL, "SYSMONpause", "Pause requires integer");
+               throw(MAL, "SYSMONpause", SQLSTATE(42000) "Pause requires 
integer");
        }
+       if (tag < 1)
+               throw(MAL, "SYSMONpause", SQLSTATE(42000) "Tag must be 
positive");
        MT_lock_set(&mal_delayLock);
-       for ( i = 0; QRYqueue[i].tag; i++)
+       for (lng i = 0; QRYqueue[i].tag; i++)
                if( (lng) QRYqueue[i].tag == tag && (QRYqueue[i].cntxt->user == 
cntxt->user || cntxt->user == MAL_ADMIN)){
                        QRYqueue[i].stk->status = 'p';
                        QRYqueue[i].status = "paused";
+                       set = true;
                }
        MT_lock_unset(&mal_delayLock);
-       return MAL_SUCCEED;
+       return set ? MAL_SUCCEED : createException(MAL, "SYSMONpause", 
SQLSTATE(42000) "Tag " LLFMT " unknown", tag);
 }
 
 str
 SYSMONresume(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{      lng i,tag = 0;
+{
+       bool set = false;
+       lng tag = 0;
        (void) mb;
        (void) stk;
        (void) pci;
@@ -174,24 +181,29 @@ SYSMONresume(Client cntxt, MalBlkPtr mb,
        case TYPE_hge:
                /* Does this happen?
                 * If so, what do we have TODO ? */
-               throw(MAL, "SYSMONresume", "type hge not handled, yet");
+               throw(MAL, "SYSMONresume", SQLSTATE(42000) "type hge not 
handled, yet");
 #endif
        default:
-               throw(MAL, "SYSMONresume", "Resume requires integer");
+               throw(MAL, "SYSMONresume", SQLSTATE(42000) "Resume requires 
integer");
        }
+       if (tag < 1)
+               throw(MAL, "SYSMONresume", SQLSTATE(42000) "Tag must be 
positive");
        MT_lock_set(&mal_delayLock);
-       for ( i = 0; QRYqueue[i].tag; i++)
+       for (lng i = 0; QRYqueue[i].tag; i++)
                if( (lng)QRYqueue[i].tag == tag && (QRYqueue[i].cntxt->user == 
cntxt->user || cntxt->user == MAL_ADMIN)){
                        QRYqueue[i].stk->status = 0;
                        QRYqueue[i].status = "running";
+                       set = true;
                }
        MT_lock_unset(&mal_delayLock);
-       return MAL_SUCCEED;
+       return set ? MAL_SUCCEED : createException(MAL, "SYSMONresume", 
SQLSTATE(42000) "Tag " LLFMT " unknown", tag);
 }
 
 str
 SYSMONstop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{      lng i,tag = 0;
+{
+       bool set = false;
+       lng tag = 0;
        (void) mb;
        (void) stk;
        (void) pci;
@@ -205,17 +217,20 @@ SYSMONstop(Client cntxt, MalBlkPtr mb, M
        case TYPE_hge:
                /* Does this happen?
                 * If so, what do we have TODO ? */
-               throw(MAL, "SYSMONstop", "type hge not handled, yet");
+               throw(MAL, "SYSMONstop", SQLSTATE(42000) "type hge not handled, 
yet");
 #endif
        default:
-               throw(MAL, "SYSMONstop", "Stop requires integer");
+               throw(MAL, "SYSMONstop", SQLSTATE(42000) "Stop requires 
integer");
        }
+       if (tag < 1)
+               throw(MAL, "SYSMONstop", SQLSTATE(42000) "Tag must be 
positive");
        MT_lock_set(&mal_delayLock);
-       for ( i = 0; QRYqueue[i].tag; i++)
+       for (lng i = 0; QRYqueue[i].tag; i++)
                if( (lng) QRYqueue[i].tag == tag && (QRYqueue[i].cntxt->user == 
cntxt->user || cntxt->user == MAL_ADMIN)){
                        QRYqueue[i].stk->status = 'q';
                        QRYqueue[i].status = "stopping";
+                       set = true;
                }
        MT_lock_unset(&mal_delayLock);
-       return MAL_SUCCEED;
+       return set ? MAL_SUCCEED : createException(MAL, "SYSMONstop", 
SQLSTATE(42000) "Tag " LLFMT " unknown", tag);
 }
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
@@ -2542,18 +2542,44 @@ sql_update_linear_hashing(Client c, mvc 
                        "grant select on sys.queue to public;\n"
 
                        "create procedure sys.pause(tag tinyint)\n"
-                       "external name sql.sysmon_pause;\n"
+                       " external name sql.sysmon_pause;\n"
+                       "grant execute on procedure sys.pause(tinyint) to 
public;\n"
                        "create procedure sys.resume(tag tinyint)\n"
-                       "external name sql.sysmon_resume;\n"
+                       " external name sql.sysmon_resume;\n"
+                       "grant execute on procedure sys.resume(tinyint) to 
public;\n"
                        "create procedure sys.stop(tag tinyint)\n"
                        "external name sql.sysmon_stop;\n"
+                       "grant execute on procedure sys.stop(tinyint) to 
public;\n"
 
                        "create procedure sys.pause(tag smallint)\n"
-                       "external name sql.sysmon_pause;\n"
+                       " external name sql.sysmon_pause;\n"
+                       "grant execute on procedure sys.pause(smallint) to 
public;\n"
                        "create procedure sys.resume(tag smallint)\n"
-                       "external name sql.sysmon_resume;\n"
+                       " external name sql.sysmon_resume;\n"
+                       "grant execute on procedure sys.resume(smallint) to 
public;\n"
                        "create procedure sys.stop(tag smallint)\n"
-                       "external name sql.sysmon_stop;\n");
+                       " external name sql.sysmon_stop;\n"
+                       "grant execute on procedure sys.stop(smallint) to 
public;\n"
+
+                       "create procedure sys.pause(tag int)\n"
+                       " external name sql.sysmon_pause;\n"
+                       "grant execute on procedure sys.pause(int) to public;\n"
+                       "create procedure sys.resume(tag int)\n"
+                       " external name sql.sysmon_resume;\n"
+                       "grant execute on procedure sys.resume(int) to 
public;\n"
+                       "create procedure sys.stop(tag int)\n"
+                       " external name sql.sysmon_stop;\n"
+                       "grant execute on procedure sys.stop(int) to public;\n"
+
+                       "create procedure sys.pause(tag bigint)\n"
+                       " external name sql.sysmon_pause;\n"
+                       "grant execute on procedure sys.pause(bigint) to 
public;\n"
+                       "create procedure sys.resume(tag bigint)\n"
+                       " external name sql.sysmon_resume;\n"
+                       "grant execute on procedure sys.resume(bigint) to 
public;\n"
+                       "create procedure sys.stop(tag bigint)\n"
+                       " external name sql.sysmon_stop;\n"
+                       "grant execute on procedure sys.stop(bigint) to 
public;\n");
 
        pos += snprintf(buf + pos, bufsize - pos,
                        "update sys.functions set system = true where schema_id 
= (select id from sys.schemas where name = 'sys')"
diff --git a/sql/scripts/26_sysmon.sql b/sql/scripts/26_sysmon.sql
--- a/sql/scripts/26_sysmon.sql
+++ b/sql/scripts/26_sysmon.sql
@@ -28,28 +28,40 @@ grant select on sys.queue to public;
 -- operations to manipulate the state of havoc queries
 create procedure sys.pause(tag tinyint)
 external name sql.sysmon_pause;
+grant execute on procedure sys.pause(tinyint) to public;
 create procedure sys.resume(tag tinyint)
 external name sql.sysmon_resume;
+grant execute on procedure sys.resume(tinyint) to public;
 create procedure sys.stop(tag tinyint)
 external name sql.sysmon_stop;
+grant execute on procedure sys.stop(tinyint) to public;
 
 create procedure sys.pause(tag smallint)
 external name sql.sysmon_pause;
+grant execute on procedure sys.pause(smallint) to public;
 create procedure sys.resume(tag smallint)
 external name sql.sysmon_resume;
+grant execute on procedure sys.resume(smallint) to public;
 create procedure sys.stop(tag smallint)
 external name sql.sysmon_stop;
+grant execute on procedure sys.stop(smallint) to public;
 
 create procedure sys.pause(tag int)
 external name sql.sysmon_pause;
+grant execute on procedure sys.pause(int) to public;
 create procedure sys.resume(tag int)
 external name sql.sysmon_resume;
+grant execute on procedure sys.resume(int) to public;
 create procedure sys.stop(tag int)
 external name sql.sysmon_stop;
+grant execute on procedure sys.stop(int) to public;
 
 create procedure sys.pause(tag bigint)
 external name sql.sysmon_pause;
+grant execute on procedure sys.pause(bigint) to public;
 create procedure sys.resume(tag bigint)
 external name sql.sysmon_resume;
+grant execute on procedure sys.resume(bigint) to public;
 create procedure sys.stop(tag bigint)
 external name sql.sysmon_stop;
+grant execute on procedure sys.stop(bigint) to public;
diff --git a/sql/test/Users/Tests/sessioncontrol.stable.err 
b/sql/test/Users/Tests/sessioncontrol.stable.err
--- a/sql/test/Users/Tests/sessioncontrol.stable.err
+++ b/sql/test/Users/Tests/sessioncontrol.stable.err
@@ -34,7 +34,7 @@ QUERY = call setquerytimeout(-1);
 ERROR = !Query timeout should be >= 0
 MAPI  = (monetdb) /var/tmp/mtest-61463/.s.monetdb.39827
 QUERY = call setworkerlimit( -1);
-ERROR = !At least one worker needed
+ERROR = !The number of workers cannot be negative
 
 # 18:15:20 >  
 # 18:15:20 >  "Done."
diff --git a/sql/test/emptydb/Tests/check.stable.out 
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -5021,6 +5021,10 @@ drop function pcre_replace(string, strin
 [ "newurl",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "number",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "output",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
 [ "prepared_statements",       "public",       "EXECUTE",      "monetdb",      
0       ]
 [ "prepared_statements_args",  "public",       "EXECUTE",      "monetdb",      
0       ]
 [ "quantile",  "public",       "EXECUTE",      "monetdb",      0       ]
@@ -5045,6 +5049,10 @@ drop function pcre_replace(string, strin
 [ "queue",     "public",       "EXECUTE",      "monetdb",      0       ]
 [ "radians",   "public",       "EXECUTE",      "monetdb",      0       ]
 [ "rejects",   "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "reverse_qual",      "public",       "EXECUTE",      "monetdb",      0       
]
 [ "reverse_seq",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "right_shift",       "public",       "EXECUTE",      "monetdb",      0       
]
@@ -5199,6 +5207,10 @@ drop function pcre_replace(string, strin
 [ "stddev_samp",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "stddev_samp",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "stddev_samp",       "public",       "EXECUTE",      "monetdb",      0       
]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
 [ "str_to_date",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "str_to_time",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "str_to_timestamp",  "public",       "EXECUTE",      "monetdb",      0       
]
diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit 
b/sql/test/emptydb/Tests/check.stable.out.32bit
--- a/sql/test/emptydb/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb/Tests/check.stable.out.32bit
@@ -5004,6 +5004,10 @@ drop function pcre_replace(string, strin
 [ "newurl",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "number",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "output",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
 [ "prepared_statements",       "public",       "EXECUTE",      "monetdb",      
0       ]
 [ "prepared_statements_args",  "public",       "EXECUTE",      "monetdb",      
0       ]
 [ "quantile",  "public",       "EXECUTE",      "monetdb",      0       ]
@@ -5028,6 +5032,10 @@ drop function pcre_replace(string, strin
 [ "queue",     "public",       "EXECUTE",      "monetdb",      0       ]
 [ "radians",   "public",       "EXECUTE",      "monetdb",      0       ]
 [ "rejects",   "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "resume",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "reverse_qual",      "public",       "EXECUTE",      "monetdb",      0       
]
 [ "reverse_seq",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "right_shift",       "public",       "EXECUTE",      "monetdb",      0       
]
@@ -5182,6 +5190,10 @@ drop function pcre_replace(string, strin
 [ "stddev_samp",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "stddev_samp",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "stddev_samp",       "public",       "EXECUTE",      "monetdb",      0       
]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
+[ "stop",      "public",       "EXECUTE",      "monetdb",      0       ]
 [ "str_to_date",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "str_to_time",       "public",       "EXECUTE",      "monetdb",      0       
]
 [ "str_to_timestamp",  "public",       "EXECUTE",      "monetdb",      0       
]
diff --git a/sql/test/emptydb/Tests/check.stable.out.int128 
b/sql/test/emptydb/Tests/check.stable.out.int128
--- a/sql/test/emptydb/Tests/check.stable.out.int128
+++ b/sql/test/emptydb/Tests/check.stable.out.int128
@@ -5245,6 +5245,10 @@ drop function pcre_replace(string, strin
 [ "newurl",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "number",    "public",       "EXECUTE",      "monetdb",      0       ]
 [ "output",    "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
+[ "pause",     "public",       "EXECUTE",      "monetdb",      0       ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to