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