Changeset: 912d82b6a114 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/912d82b6a114
Branch: binresultset
Log Message:

merged with default


diffs (189 lines):

diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -236,7 +236,6 @@ static FlowEvent
 q_dequeue(Queue *q, Client cntxt)
 {
        FlowEvent r = NULL, s = NULL;
-       //int i;
 
        assert(q);
        MT_sema_down(&q->s);
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/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -480,11 +480,6 @@ typedef struct sqlstore {
        int catalog_version;    /* software version of the catalog */
        sql_catalog *cat;               /* the catalog of persistent tables 
(what to do with tmp tables ?) */
        sql_schema *tmp;                /* keep pointer to default (empty) tmp 
schema */
-       MT_Lock lock;                   /* lock protecting concurrent writes 
(not reads, ie use rcu) */
-       MT_Lock commit;                 /* protect transactions, only single 
commit (one wal writer) */
-       MT_Lock flush;                  /* flush lock protecting concurrent 
writes (not reads, ie use rcu) */
-       MT_Lock table_locks[NR_TABLE_LOCKS];            /* protecting 
concurrent writes to tables (storage) */
-       MT_Lock column_locks[NR_COLUMN_LOCKS];          /* protecting 
concurrent writes to columns (storage) */
        list *active;                   /* list of running transactions */
 
        ATOMIC_TYPE nr_active;  /* count number of transactions */
@@ -513,6 +508,12 @@ typedef struct sqlstore {
        table_functions table_api;
        logger_functions logger_api;
        void *logger;                   /* space to keep logging structure of 
storage backend */
+
+       MT_Lock lock;                   /* lock protecting concurrent writes 
(not reads, ie use rcu) */
+       MT_Lock commit;                 /* protect transactions, only single 
commit (one wal writer) */
+       MT_Lock flush;                  /* flush lock protecting concurrent 
writes (not reads, ie use rcu) */
+       MT_Lock table_locks[NR_TABLE_LOCKS];            /* protecting 
concurrent writes to tables (storage) */
+       MT_Lock column_locks[NR_COLUMN_LOCKS];          /* protecting 
concurrent writes to columns (storage) */
 } sqlstore;
 
 typedef enum sql_dependency_change_type {
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1763,6 +1763,7 @@ bootstrap_create_schema(sql_trans *tr, c
        } else {
                base_init(NULL, &s->base, id, true, name);
        }
+       s->base.new = store->first;
        s->auth_id = auth_id;
        s->owner = owner;
        s->system = TRUE;
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,35 +68,44 @@ def execute_qry():
             print(e)
             exit(1)
 
-with SQLTestCase() as mdb:
-    mdb.connect(username="monetdb", password="monetdb")
-    mdb.execute(init).assertSucceeded()
-    mdb.execute(p_proced).assertSucceeded()
-    mdb.execute(r_proced).assertSucceeded()
-    mdb.execute(s_proced).assertSucceeded()
+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)
 
-    client_proc1 = mp.Process(target=execute_qry)
-    client_proc1.start()
+if __name__ == '__main__':
+    with SQLTestCase() as mdb:
+        mdb.connect(username="monetdb", password="monetdb")
+        mdb.execute(init).assertSucceeded()
+        mdb.execute(p_proced).assertSucceeded()
+        mdb.execute(r_proced).assertSucceeded()
+        mdb.execute(s_proced).assertSucceeded()
 
-    time.sleep(1)
-    mdb.execute('call pause_sleep();').assertSucceeded()
-    mdb.execute(status).assertSucceeded().assertDataResultMatch([('paused',)])
-    mdb.execute('call resume_sleep();').assertSucceeded()
+        client_proc1 = mp.Process(target=execute_qry_1)
+        client_proc1.start()
 
-    client_proc1.join()
-
-    client_proc2 = mp.Process(target=execute_qry)
-    client_proc2.start()
-
-    time.sleep(1)
-    mdb.execute('call stop_sleep();').assertSucceeded()
-    
mdb.execute(status).assertSucceeded().assertDataResultMatch([('finished',)])
+        time.sleep(1)
+        mdb.execute('call pause_sleep();').assertSucceeded()
+        
mdb.execute(st_paused).assertSucceeded().assertDataResultMatch([('paused',)])
+        mdb.execute('call resume_sleep();').assertSucceeded()
+        client_proc1.join()
 
-    client_proc2.join()
+        client_proc2 = mp.Process(target=execute_qry_2)
+        client_proc2.start()
+        time.sleep(1)
+        mdb.execute('call stop_sleep();').assertSucceeded()
+        
mdb.execute(st_aborted).assertSucceeded().assertDataResultMatch([('stopping',)])
+        client_proc2.join()
 
-    mdb.execute('drop function sleep;').assertSucceeded()
-    mdb.execute('drop procedure pause_sleep;').assertSucceeded()
-    mdb.execute('drop procedure resume_sleep;').assertSucceeded()
-    mdb.execute('drop procedure stop_sleep;').assertSucceeded()
-    mdb.execute('drop user u1;').assertSucceeded()
-    mdb.execute('drop schema s1;').assertSucceeded()
+        mdb.execute('drop function sleep;').assertSucceeded()
+        mdb.execute('drop procedure pause_sleep;').assertSucceeded()
+        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()
diff --git a/sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py 
b/sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py
--- a/sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py
+++ b/sql/test/sysmon/Tests/sys_queue_multisessions.SQL.py
@@ -42,7 +42,7 @@ with SQLTestCase() as mdb:
             mdb.execute('select username, sessionid from sys.queue(\'ALL\') 
group by username, sessionid order by sessionid;')\
                .assertSucceeded().assertDataResultMatch([('monetdb', 0), 
('u1', 1), ('u2', 2)])
 
-    mdb.execute('drop user u1').assertSucceeded()
-    mdb.execute('drop user u2').assertSucceeded()
-    mdb.execute('drop role r1').assertSucceeded()
-    mdb.execute('drop schema s1').assertSucceeded()
+    mdb.execute('drop user u1;').assertSucceeded()
+    mdb.execute('drop user u2;').assertSucceeded()
+    mdb.execute('drop role r1;').assertSucceeded()
+    mdb.execute('drop schema s1;').assertSucceeded()
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to