Changeset: 0d937633e27f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0d937633e27f
Modified Files:
        monetdb5/modules/mal/tablet.c
        sql/server/sql_mvc.c
Branch: default
Log Message:

Check output results of functions


diffs (109 lines):

diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -1700,7 +1700,10 @@ SQLload_file(Client cntxt, Tablet *as, b
                goto bailout;
        }
 
-       MT_create_thread(&task.tid, SQLproducer, (void *) &task, 
MT_THR_JOINABLE);
+       if(MT_create_thread(&task.tid, SQLproducer, (void *) &task, 
MT_THR_JOINABLE) < 0) {
+               tablet_error(&task, lng_nil, int_nil, SQLSTATE(42000) "failed 
to start producer thread", "SQLload_file");
+               goto bailout;
+       }
 #ifdef _DEBUG_TABLET_
        mnstr_printf(GDKout, "#parallel bulk load " LLFMT " - " BUNFMT "\n",
                                 skip, task.maxrow);
@@ -1720,7 +1723,10 @@ SQLload_file(Client cntxt, Tablet *as, b
 #endif
                MT_sema_init(&ptask[j].sema, 0, "ptask[j].sema");
                MT_sema_init(&ptask[j].reply, 0, "ptask[j].reply");
-               MT_create_thread(&ptask[j].tid, SQLworker, (void *) &ptask[j], 
MT_THR_JOINABLE);
+               if(MT_create_thread(&ptask[j].tid, SQLworker, (void *) 
&ptask[j], MT_THR_JOINABLE) < 0) {
+                       tablet_error(&task, lng_nil, int_nil, SQLSTATE(42000) 
"failed to start worker thread", "SQLload_file");
+                       goto bailout;
+               }
        }
 
        tio = GDKusec();
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -316,6 +316,7 @@ mvc_commit(mvc *m, int chain, const char
 {
        sql_trans *cur, *tr = m->session->tr, *ctr;
        int ok = SQL_OK;//, wait = 0;
+       str msg;
 
        assert(tr);
        assert(m->session->active);     /* only commit an active transaction */
@@ -342,8 +343,13 @@ mvc_commit(mvc *m, int chain, const char
                        mvc_rollback(m, chain, name);
                        return -1;
                }
-               WLCcommit(m->clientid);
+               msg = WLCcommit(m->clientid);
                store_unlock();
+               if(msg != MAL_SUCCEED) {
+                       (void) sql_error(m, 02, "%s\n", msg);
+                       mvc_rollback(m, chain, name);
+                       return -1;
+               }
                m->type = Q_TRANS;
                if (m->qc) /* clean query cache, protect against concurrent 
access on the hash tables (when functions already exists, concurrent mal will
 build up the hash (not copied in the trans dup)) */
@@ -378,10 +384,15 @@ build up the hash (not copied in the tra
                if (!chain) 
                        sql_trans_end(m->session);
                m->type = Q_TRANS;
-               WLCcommit(m->clientid);
+               msg = WLCcommit(m->clientid);
+               store_unlock();
+               if(msg != MAL_SUCCEED) {
+                       (void) sql_error(m, 02, "%s\n", msg);
+                       mvc_rollback(m, chain, name);
+                       return -1;
+               }
                if (mvc_debug)
                        fprintf(stderr, "#mvc_commit %s done\n", (name) ? name 
: "");
-               store_unlock();
                return 0;
        }
 
@@ -411,7 +422,13 @@ build up the hash (not copied in the tra
                mvc_rollback(m, chain, name);
                return -1;
        }
-       WLCcommit(m->clientid);
+       msg = WLCcommit(m->clientid);
+       if(msg != MAL_SUCCEED) {
+               store_unlock();
+               (void) sql_error(m, 02, "%s\n", msg);
+               mvc_rollback(m, chain, name);
+               return -1;
+       }
        sql_trans_end(m->session);
        if (chain) 
                sql_trans_begin(m->session);
@@ -427,6 +444,7 @@ mvc_rollback(mvc *m, int chain, const ch
 {
        int res = 0;
        sql_trans *tr = m->session->tr;
+       str msg;
 
        if (mvc_debug)
                fprintf(stderr, "#mvc_rollback %s\n", (name) ? name : "");
@@ -471,8 +489,13 @@ mvc_rollback(mvc *m, int chain, const ch
                if (chain) 
                        sql_trans_begin(m->session);
        }
-       WLCrollback(m->clientid);
+       msg = WLCrollback(m->clientid);
        store_unlock();
+       if (msg != MAL_SUCCEED) {
+               (void)sql_error(m, 02, "%s\n", msg);
+               m->session->status = -1;
+               return -1;
+       }
        m->type = Q_TRANS;
        if (mvc_debug)
                fprintf(stderr, "#mvc_rollback %s done\n", (name) ? name : "");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to