Changeset: 730056831c16 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=730056831c16
Modified Files:
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_scenario.h
Branch: default
Log Message:
Simplify SQLtrans calls.
Back then I didn't know that we could freely change the SQL layer ABI.
diffs (104 lines):
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -474,13 +474,7 @@ SQLstatementIntern(Client c, str *expr,
/* create private allocator */
m->sa = NULL;
- SQLtrans(m);
- if(*m->errstr) {
- if (strlen(m->errstr) > 6 && m->errstr[5] == '!')
- msg = createException(SQL, "sql.statement", "%s",
m->errstr);
- else
- msg = createException(SQL, "sql.statement",
SQLSTATE(42000) "%s", m->errstr);
- *m->errstr=0;
+ if ((msg = SQLtrans(m)) != MAL_SUCCEED) {
if (inited)
SQLresetClient(c);
return msg;
diff --git a/sql/backends/monet5/sql_scenario.c
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -636,32 +636,30 @@ SQLautocommit(mvc *m)
return msg;
}
-void
+str
SQLtrans(mvc *m)
{
m->caching = m->cache;
if (!m->session->active) {
sql_session *s;
- if(mvc_trans(m) < 0) {
- (void) sql_error(m, 02, SQLSTATE(HY001) "Allocation
failure while starting the transaction");
- return;
- }
+ if (mvc_trans(m) < 0)
+ throw(SQL, "sql.trans", SQLSTATE(HY001)
MAL_MALLOC_FAIL);
s = m->session;
if (!s->schema) {
if (s->schema_name)
GDKfree(s->schema_name);
s->schema_name = monet5_user_get_def_schema(m,
m->user_id);
- if(!s->schema_name) {
+ if (!s->schema_name) {
mvc_cancel_session(m);
- (void) sql_error(m, 02, SQLSTATE(HY001)
"Allocation failure while starting the transaction");
- return;
+ throw(SQL, "sql.trans", SQLSTATE(HY001)
MAL_MALLOC_FAIL);
}
assert(s->schema_name);
s->schema = find_sql_schema(s->tr, s->schema_name);
assert(s->schema);
}
}
+ return MAL_SUCCEED;
}
#ifdef HAVE_EMBEDDED
@@ -1007,16 +1005,11 @@ SQLparser(Client c)
#endif
m = be->mvc;
m->type = Q_PARSE;
- if (be->language != 'X')
- SQLtrans(m);
- if(*m->errstr) {
- if (strlen(m->errstr) > 6 && m->errstr[5] == '!')
- msg = createException(PARSE, "SQLparser", "%s",
m->errstr);
- else
- msg = createException(PARSE, "SQLparser",
SQLSTATE(42000) "%s", m->errstr);
- *m->errstr=0;
- c->mode = FINISHCLIENT;
- return msg;
+ if (be->language != 'X') {
+ if ((msg = SQLtrans(m)) != MAL_SUCCEED) {
+ c->mode = FINISHCLIENT;
+ return msg;
+ }
}
pstatus = m->session->status;
@@ -1038,7 +1031,8 @@ SQLparser(Client c)
n = sscanf(in->buf + in->pos + 7, "%d %d %d", &v, &off,
&len);
if (n == 2 || n == 3) {
- mvc_export_chunk(be, out, v, off, n == 3 ? len :
m->reply_size);
+ if (mvc_export_chunk(be, out, v, off, n == 3 ? len :
m->reply_size))
+ throw(SQL, "SQLparser", SQLSTATE(45000) "Result
set construction failed");
in->pos = in->len; /* HACK: should use parsed
length */
return MAL_SUCCEED;
diff --git a/sql/backends/monet5/sql_scenario.h
b/sql/backends/monet5/sql_scenario.h
--- a/sql/backends/monet5/sql_scenario.h
+++ b/sql/backends/monet5/sql_scenario.h
@@ -19,7 +19,7 @@ sql5_export str SQLprelude(Client cntxt,
sql5_export str SQLepilogue(void *ret);
sql5_export str SQLautocommit(mvc *m);
-sql5_export void SQLtrans(mvc *m);
+sql5_export str SQLtrans(mvc *m);
sql5_export str SQLexit(Client c);
sql5_export str SQLexitClient(Client c);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list