Changeset: 3d7e3deb2f6c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3d7e3deb2f6c
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_scenario.c
Branch: default
Log Message:
Update check for avoiding double SQL states.
diffs (90 lines):
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -561,7 +561,7 @@ setVariable(Client cntxt, MalBlkPtr mb,
lng sgn = val_get_number(src);
if ((msg = sql_update_var(m, varname, src->val.sval, sgn)) !=
NULL) {
snprintf(buf, BUFSIZ, "%s", msg);
- if( strstr(msg, "SQLSTATE"))
+ if (strlen(msg) > 6 && msg[5] == '!')
return msg;
_DELETE(msg);
throw(SQL, "sql.setVariable", SQLSTATE(42100) "%s",
buf);
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
@@ -282,7 +282,7 @@ SQLrun(Client c, backend *be, mvc *m)
ValPtr val;
if (*m->errstr){
- if( strstr(m->errstr,"SQLSTATE"))
+ 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);
@@ -512,7 +512,7 @@ SQLstatementIntern(Client c, str *expr,
if (!err)
err = mvc_status(m);
if (*m->errstr){
- if( strstr(m->errstr,"SQLSTATE"))
+ 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);
@@ -541,7 +541,7 @@ SQLstatementIntern(Client c, str *expr,
#endif
scanner_query_processed(&(m->scanner));
if ((err = mvc_status(m)) ) {
- if( strstr(m->errstr,"SQLSTATE"))
+ 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);
@@ -573,7 +573,7 @@ SQLstatementIntern(Client c, str *expr,
MSresetInstructions(c->curprg->def, oldstop);
freeVariables(c, c->curprg->def, c->glb, oldvtop);
c->curprg->def->errors = 0;
- if( strstr(m->errstr,"SQLSTATE"))
+ 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);
@@ -700,7 +700,7 @@ SQLengineIntern(Client c, backend *be)
if (c->curprg->def->stop == 1) {
if (mvc_status(m)) {
if (*m->errstr){
- if( strstr(m->errstr,"SQLSTATE"))
+ 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);
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
@@ -1042,7 +1042,7 @@ SQLparser(Client c)
if (!err &&m->scanner.started) /* repeat old errors, with a
parsed query */
err = mvc_status(m);
if (err && *m->errstr) {
- if( strstr(m->errstr,"SQLSTATE"))
+ 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);
@@ -1088,7 +1088,7 @@ SQLparser(Client c)
r = sql_symbol2relation(m, m->sym);
if (!r || (err = mvc_status(m) && m->type != Q_TRANS &&
*m->errstr)) {
- if( strstr(m->errstr,"SQLSTATE"))
+ 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);
@@ -1177,7 +1177,7 @@ SQLparser(Client c)
MSresetInstructions(c->curprg->def, oldstop);
freeVariables(c, c->curprg->def, NULL, oldvtop);
if (msg == NULL && *m->errstr){
- if(strstr(m->errstr,"SQLSTATE"))
+ if (strlen(m->errstr) > 6 && m->errstr[5] ==
'!')
msg = createException(PARSE,
"SQLparser", "%s", m->errstr);
else
msg = createException(PARSE,
"SQLparser", SQLSTATE(M0M27) "Semantic errors %s", m->errstr);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list