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

Reply via email to