Changeset: 8fcd59f4a03f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8fcd59f4a03f
Modified Files:
monetdb5/mal/mal_runtime.c
sql/test/sysmon/Tests/sys_pause_resume_stop.SQL.py
Branch: default
Log Message:
Queries that are stopped now are marked as aborted instead of finished.
diffs (100 lines):
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -281,7 +281,10 @@ runtimeProfileFinish(Client cntxt, MalBl
MT_lock_set(&mal_delayLock);
for (i = 0; i < qsize; i++) {
if (QRYqueue[i].stk == stk) {
- QRYqueue[i].status = "finished";
+ if (QRYqueue[i].status[0] == 's')
+ QRYqueue[i].status = "aborted";
+ else
+ QRYqueue[i].status = "finished";
QRYqueue[i].finished = time(0);
QRYqueue[i].workers = (int) ATOMIC_GET(&mb->workers);
/* give the MB upperbound by addition of 1 MB */
diff --git a/sql/test/sysmon/Tests/sys_pause_resume_stop.SQL.py
b/sql/test/sysmon/Tests/sys_pause_resume_stop.SQL.py
--- a/sql/test/sysmon/Tests/sys_pause_resume_stop.SQL.py
+++ b/sql/test/sysmon/Tests/sys_pause_resume_stop.SQL.py
@@ -10,8 +10,10 @@ db = os.getenv('TSTDB')
init = '''
create schema s1;
create user u1 with password \'u1\' name \'u1\' schema s1;
+ create user u2 with password \'u2\' name \'u2\' schema s1;
create or replace function sleep(msecs int) returns int external
name alarm.sleep;
grant execute on function sleep(int) to u1;
+ grant execute on function sleep(int) to u2;
'''
p_proced = '''
@@ -45,11 +47,19 @@ u1_qry = '''
select sleep(2000);
'''
-status = '''
- select status from queue(\'ALL\') where query like \'select
sleep%\';
+st_paused = '''
+ select status from queue(\'u1\') where query like \'select
sleep%\' and status = \'paused\';
'''
-def execute_qry():
+st_aborted = '''
+ select status from queue(\'u2\') where query like \'select
sleep%\';
+ '''
+
+st_aborted2 = '''
+ select status from queue() where query like \'select sleep%\';
+ '''
+# and status = \'aborted\';
+def execute_qry_1():
with SQLTestCase() as client:
client.connect(username = 'u1', password = 'u1')
try:
@@ -58,6 +68,16 @@ def execute_qry():
print(e)
exit(1)
+def execute_qry_2():
+ with SQLTestCase() as client:
+ client.connect(username = 'u2', password = 'u2')
+ try:
+ client.execute(u1_qry)
+
client.execute(st_aborted2).assertSucceeded().assertDataResultMatch([('aborted',)])
+ except OperationalError as e:
+ print(e)
+ exit(1)
+
if __name__ == '__main__':
with SQLTestCase() as mdb:
mdb.connect(username="monetdb", password="monetdb")
@@ -66,20 +86,20 @@ if __name__ == '__main__':
mdb.execute(r_proced).assertSucceeded()
mdb.execute(s_proced).assertSucceeded()
- client_proc1 = mp.Process(target=execute_qry)
+ client_proc1 = mp.Process(target=execute_qry_1)
client_proc1.start()
time.sleep(1)
mdb.execute('call pause_sleep();').assertSucceeded()
-
mdb.execute(status).assertSucceeded().assertDataResultMatch([('paused',)])
+
mdb.execute(st_paused).assertSucceeded().assertDataResultMatch([('paused',)])
mdb.execute('call resume_sleep();').assertSucceeded()
client_proc1.join()
- client_proc2 = mp.Process(target=execute_qry)
+ client_proc2 = mp.Process(target=execute_qry_2)
client_proc2.start()
time.sleep(1)
mdb.execute('call stop_sleep();').assertSucceeded()
-
mdb.execute(status).assertSucceeded().assertDataResultMatch([('finished',)])
+
mdb.execute(st_aborted).assertSucceeded().assertDataResultMatch([('stopping',)])
client_proc2.join()
mdb.execute('drop function sleep;').assertSucceeded()
@@ -87,4 +107,5 @@ if __name__ == '__main__':
mdb.execute('drop procedure resume_sleep;').assertSucceeded()
mdb.execute('drop procedure stop_sleep;').assertSucceeded()
mdb.execute('drop user u1;').assertSucceeded()
+ mdb.execute('drop user u2;').assertSucceeded()
mdb.execute('drop schema s1;').assertSucceeded()
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]