Changeset: 91a27412004c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=91a27412004c
Modified Files:
        sql/backends/monet5/sql_scenario.c
        sql/server/rel_schema.c
        sql/server/sql_parser.y
        sql/test/BugConstraints/Tests/drop_column_1643542.stable.err
        
sql/test/BugDay_2005-10-06_2.8/Tests/string_truncate.SF-919542.stable.err
        sql/test/BugDay_2005-10-06_2.9.3/Tests/case.SF-929151.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/limit_in_create_view.SF-924448.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/parser_crashes_server.SF-921996.stable.err
        sql/test/BugTracker-2008/Tests/insert-null-byte.SF-2233581.stable.err
        
sql/test/BugTracker-2009/Tests/create_table_dup_name.SF-2879005.stable.err
        
sql/test/BugTracker-2009/Tests/insert_into_values_bug.SF-2807609.stable.err
        sql/test/BugTracker-2009/Tests/limit_in_subquery.SF-2620437.stable.err
        
sql/test/BugTracker-2009/Tests/temp_table_fail_leaves_data.SF-2793286.stable.err
        
sql/test/BugTracker-2009/Tests/unique_constraint_on_char.SF-2873564.stable.err
        sql/test/BugTracker-2010/Tests/crashonschema.Bug-2547.stable.err
        sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
        sql/test/BugTracker-2010/Tests/unicode-bom.Bug-2641.stable.err
        
sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.err
        sql/test/BugTracker-2015/Tests/with-columns-mismatch.Bug-3697.stable.err
        
sql/test/BugTracker-2016/Tests/groupby_on_column_expression.Bug-3832.stable.err
        sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.stable.err
        sql/test/BugTracker/Tests/broken_join.SF-1373391.stable.err
Branch: malerrors
Log Message:

A batch of approvals and small fixes for SQLSTATE


diffs (truncated from 585 to 300 lines):

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
@@ -332,7 +332,7 @@ global_variables(mvc *sql, char *user, c
        return 0;
 }
 
-#define TRANS_ABORTED "!25005!current transaction is aborted (please 
ROLLBACK)\n"
+#define TRANS_ABORTED "!SQLSTATE 25005!current transaction is aborted (please 
ROLLBACK)\n"
 
 str
 handle_error(mvc *m, int pstatus, str msg)
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -120,7 +120,7 @@ view_rename_columns( mvc *sql, char *nam
                        break;
        }
        if (n || m) 
-               return sql_error(sql, 02, "M0M03!Column lists do not match");
+               return sql_error(sql, 02, "SQLSTATE M0M03!Column lists do not 
match");
        (void)name;
        sq = rel_project(sql->sa, sq, l);
        set_processed(sq);
@@ -154,7 +154,7 @@ as_subquery( mvc *sql, sql_table *t, sql
                        mvc_create_column(sql, t, cname, tp);
                }
                if (n || m) {
-                       sql_error(sql, 01, "21S02!%s: number of columns does 
not match", msg);
+                       sql_error(sql, 01, "SQLSTATE 21S02!%s: number of 
columns does not match", msg);
                        return -1;
                }
        } else {
@@ -371,7 +371,7 @@ column_constraint_type(mvc *sql, char *n
        }       break;
        }
        if (res == SQL_ERR) {
-               (void) sql_error(sql, 02, "M0M03!unknown constraint (" PTRFMT 
")->token = %s\n", PTRFMTCAST s, token2string(s->token));
+               (void) sql_error(sql, 02, "SQLSTATE M0M03!unknown constraint (" 
PTRFMT ")->token = %s\n", PTRFMTCAST s, token2string(s->token));
        }
        return res;
 }
@@ -458,7 +458,7 @@ column_option(
        }       break;
        }
        if (res == SQL_ERR) {
-               (void) sql_error(sql, 02, "M0M03!unknown column option (" 
PTRFMT ")->token = %s\n", PTRFMTCAST s, token2string(s->token));
+               (void) sql_error(sql, 02, "SQLSTATE M0M03!unknown column option 
(" PTRFMT ")->token = %s\n", PTRFMTCAST s, token2string(s->token));
        }
        return res;
 }
@@ -595,7 +595,7 @@ table_constraint_type(mvc *sql, char *na
                break;
        }
        if (res != SQL_OK) {
-               sql_error(sql, 02, "M0M03!table constraint type: wrong token (" 
PTRFMT ") = %s\n", PTRFMTCAST s, token2string(s->token));
+               sql_error(sql, 02, "SQLSTATE M0M03!table constraint type: wrong 
token (" PTRFMT ") = %s\n", PTRFMTCAST s, token2string(s->token));
                return SQL_ERR;
        }
        return res;
@@ -619,7 +619,7 @@ table_constraint(mvc *sql, symbol *s, sq
        }
 
        if (res != SQL_OK) {
-               sql_error(sql, 02, "M0M03!table constraint: wrong token (" 
PTRFMT ") = %s\n", PTRFMTCAST s, token2string(s->token));
+               sql_error(sql, 02, "SQLSTATE M0M03!table constraint: wrong 
token (" PTRFMT ") = %s\n", PTRFMTCAST s, token2string(s->token));
                return SQL_ERR;
        }
        return res;
@@ -800,14 +800,14 @@ table_element(mvc *sql, symbol *s, sql_s
                node *n;
 
                if (sname && !(os = mvc_bind_schema(sql, sname))) {
-                       sql_error(sql, 02, "3F000!CREATE TABLE: no such schema 
'%s'", sname);
+                       sql_error(sql, 02, "SQLSTATE 3F000!CREATE TABLE: no 
such schema '%s'", sname);
                        return SQL_ERR;
                }
                if (!os)
                        os = ss;
                ot = mvc_bind_table(sql, os, name);
                if (!ot) {
-                       sql_error(sql, 02, "3F000!CREATE TABLE: no such table 
'%s'", name);
+                       sql_error(sql, 02, "SQLSTATE 3F000!CREATE TABLE: no 
such table '%s'", name);
                        return SQL_ERR;
                }
                for (n = ot->columns.set->h; n; n = n->next) {
@@ -841,7 +841,7 @@ table_element(mvc *sql, symbol *s, sql_s
                        return SQL_ERR;
                }
                if (!drop_action && mvc_check_dependency(sql, col->base.id, 
COLUMN_DEPENDENCY, NULL)) {
-                       sql_error(sql, 02, "2BM37!ALTER TABLE: cannot drop 
column '%s': there are database objects which depend on it\n", cname);
+                       sql_error(sql, 02, "SQLSTATE 2BM37!ALTER TABLE: cannot 
drop column '%s': there are database objects which depend on it\n", cname);
                        return SQL_ERR;
                }
                if (!drop_action  && t->keys.set) {
@@ -852,7 +852,7 @@ table_element(mvc *sql, symbol *s, sql_s
                                for (m = k->columns->h; m; m = m->next) {
                                        sql_kc *kc = m->data;
                                        if (strcmp(kc->c->base.name, cname) == 
0) {
-                                               sql_error(sql, 02, "2BM37!ALTER 
TABLE: cannot drop column '%s': there are constraints which depend on it\n", 
cname);
+                                               sql_error(sql, 02, "SQLSTATE 
2BM37!ALTER TABLE: cannot drop column '%s': there are constraints which depend 
on it\n", cname);
                                                return SQL_ERR;
                                        }
                                }
@@ -864,7 +864,7 @@ table_element(mvc *sql, symbol *s, sql_s
                assert(0);
        }
        if (res == SQL_ERR) {
-               sql_error(sql, 02, "M0M03!unknown table element (" PTRFMT 
")->token = %s\n", PTRFMTCAST s, token2string(s->token));
+               sql_error(sql, 02, "SQLSTATE M0M03!unknown table element (" 
PTRFMT ")->token = %s\n", PTRFMTCAST s, token2string(s->token));
                return SQL_ERR;
        }
        return res;
@@ -885,7 +885,7 @@ rel_create_table(mvc *sql, sql_schema *s
 
        (void)create;
        if (sname && !(s = mvc_bind_schema(sql, sname)))
-               return sql_error(sql, 02, "3F000!CREATE TABLE: no such schema 
'%s'", sname);
+               return sql_error(sql, 02, "SQLSTATE 3F000!CREATE TABLE: no such 
schema '%s'", sname);
 
        if (temp != SQL_PERSIST && tt == tt_table && 
                        commit_action == CA_COMMIT)
@@ -895,7 +895,7 @@ rel_create_table(mvc *sql, sql_schema *s
                if (temp != SQL_PERSIST && tt == tt_table) {
                        s = mvc_bind_schema(sql, "tmp");
                        if (temp == SQL_LOCAL_TEMP && sname && strcmp(sname, 
s->base.name) != 0)
-                               return sql_error(sql, 02, "3F000!CREATE TABLE: 
local tempory tables should be stored in the '%s' schema", s->base.name);
+                               return sql_error(sql, 02, "SQLSTATE 
3F000!CREATE TABLE: local tempory tables should be stored in the '%s' schema", 
s->base.name);
                } else if (s == NULL) {
                        s = ss;
                }
@@ -1006,7 +1006,7 @@ rel_create_view(mvc *sql, sql_schema *ss
 (void)ss;
        (void) check;           /* Stefan: unused!? */
        if (sname && !(s = mvc_bind_schema(sql, sname))) 
-               return sql_error(sql, 02, "3F000!CREATE VIEW: no such schema 
'%s'", sname);
+               return sql_error(sql, 02, "SQLSTATE 3F000!CREATE VIEW: no such 
schema '%s'", sname);
        if (s == NULL)
                s = cur_schema(sql);
 
@@ -1022,7 +1022,7 @@ rel_create_view(mvc *sql, sql_schema *ss
                        SelectNode *sn = (SelectNode *) query;
 
                        if (sn->limit)
-                               return sql_error(sql, 01, "0A000!SQLSTATE 
42000!CREATE VIEW: LIMIT not supported");
+                               return sql_error(sql, 01, "SQLSTATE 
42000!CREATE VIEW: LIMIT not supported");
                }
 
                sq = schema_selects(sql, s, query);
@@ -1037,7 +1037,7 @@ rel_create_view(mvc *sql, sql_schema *ss
                                for (; n && m; n = n->next, m = m->next)
                                        ;
                                if (n || m) {
-                                       sql_error(sql, 01, "21S02!WITH CLAUSE: 
number of columns does not match");
+                                       sql_error(sql, 01, "SQLSTATE 21S02!WITH 
CLAUSE: number of columns does not match");
                                        rel_destroy(sq);
                                        return NULL;
                                }
@@ -1113,7 +1113,7 @@ rel_drop_type(mvc *sql, dlist *qname, in
        sql_schema *s = NULL;
 
        if (sname && !(s = mvc_bind_schema(sql, sname))) 
-               return sql_error(sql, 02, "3F000!DROP TYPE: no such schema 
'%s'", sname);
+               return sql_error(sql, 02, "SQLSTATE 3F000!DROP TYPE: no such 
schema '%s'", sname);
        if (s == NULL)
                s = cur_schema(sql);
 
@@ -1133,7 +1133,7 @@ rel_create_type(mvc *sql, dlist *qname, 
        sql_schema *s = NULL;
 
        if (sname && !(s = mvc_bind_schema(sql, sname))) 
-               return sql_error(sql, 02, "3F000!CREATE TYPE: no such schema 
'%s'", sname);
+               return sql_error(sql, 02, "SQLSTATE 3F000!CREATE TYPE: no such 
schema '%s'", sname);
        if (s == NULL)
                s = cur_schema(sql);
 
@@ -1187,7 +1187,7 @@ rel_create_schema(mvc *sql, dlist *auth_
        int auth_id = sql->role_id;
 
        if (auth && (auth_id = sql_find_auth(sql, auth)) < 0) {
-               sql_error(sql, 02, "28000!CREATE SCHEMA: no such authorization 
'%s'", auth);
+               sql_error(sql, 02, "SQLSTATE 28000!CREATE SCHEMA: no such 
authorization '%s'", auth);
                return NULL;
        }
        if (sql->user_id != USER_MONETDB && sql->role_id != ROLE_SYSADMIN) {
@@ -1199,7 +1199,7 @@ rel_create_schema(mvc *sql, dlist *auth_
        assert(name);
        if (mvc_bind_schema(sql, name)) {
                if (!ignore_in_use) {
-                       sql_error(sql, 02, "3F000!CREATE SCHEMA: name '%s' 
already in use", name);
+                       sql_error(sql, 02, "SQLSTATE 3F000!CREATE SCHEMA: name 
'%s' already in use", name);
                        return NULL;
                } else {
                        return NULL;
@@ -1254,7 +1254,7 @@ sql_alter_table(mvc *sql, dlist *qname, 
        sql_table *t = NULL;
 
        if (sname && !(s=mvc_bind_schema(sql, sname))) {
-               (void) sql_error(sql, 02, "3F000!ALTER TABLE: no such schema 
'%s'", sname);
+               (void) sql_error(sql, 02, "SQLSTATE 3F000!ALTER TABLE: no such 
schema '%s'", sname);
                return NULL;
        }
        if (!s)
@@ -1646,7 +1646,7 @@ rel_grant_privs(mvc *sql, sql_schema *cu
                return rel_grant_func(sql, cur, obj_privs, qname, typelist, 
type, grantees, grant, grantor);
        }
        default:
-               return sql_error(sql, 02, "M0M03!Grant: unknown token %d", 
token);
+               return sql_error(sql, 02, "SQLSTATE M0M03!Grant: unknown token 
%d", token);
        }
 }
 
@@ -1830,7 +1830,7 @@ rel_revoke_privs(mvc *sql, sql_schema *c
                return rel_revoke_func(sql, cur, obj_privs, qname, typelist, 
type, grantees, grant, grantor);
        }
        default:
-               return sql_error(sql, 02, "M0M03!Grant: unknown token %d", 
token);
+               return sql_error(sql, 02, "SQLSTATE M0M03!Grant: unknown token 
%d", token);
        }
 }
 
@@ -1848,7 +1848,7 @@ rel_create_index(mvc *sql, char *iname, 
        char *tname = qname_table(qname);
               
        if (sname && !(s = mvc_bind_schema(sql, sname))) 
-               return sql_error(sql, 02, "3F000!CREATE INDEX: no such schema 
'%s'", sname);
+               return sql_error(sql, 02, "SQLSTATE 3F000!CREATE INDEX: no such 
schema '%s'", sname);
        if (!s) 
                s = cur_schema(sql);
        i = mvc_bind_idx(sql, s, iname);
@@ -1935,7 +1935,7 @@ rel_schemas(mvc *sql, symbol *s)
        sql_rel *ret = NULL;
 
        if (s->token != SQL_CREATE_TABLE && s->token != SQL_CREATE_VIEW && 
STORE_READONLY) 
-               return sql_error(sql, 06, "25006!schema statements cannot be 
executed on a readonly database.");
+               return sql_error(sql, 06, "SQLSTATE 25006!schema statements 
cannot be executed on a readonly database.");
 
        switch (s->token) {
        case SQL_CREATE_SCHEMA:
@@ -2117,7 +2117,7 @@ rel_schemas(mvc *sql, symbol *s)
                ret = rel_drop_type(sql, l->h->data.lval, 
l->h->next->data.i_val);
        }       break;
        default:
-               return sql_error(sql, 01, "M0M03!schema statement unknown 
symbol(" PTRFMT ")->token = %s", PTRFMTCAST s, token2string(s->token));
+               return sql_error(sql, 01, "SQLSTATE M0M03!schema statement 
unknown symbol(" PTRFMT ")->token = %s", PTRFMTCAST s, token2string(s->token));
        }
 
        sql->type = Q_SCHEMA;
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -6109,25 +6109,26 @@ void *sql_error( mvc * sql, int error_co
 
 int sqlerror(mvc * c, const char *err)
 {
-       char *sqlstate = "42000!";
        if (err && *err == '\b') {
-               sqlstate = "";
+               (void)sql_error(c, 4,
+                               "SQLSTATE %s: %s\n",
+                               err, c->scanner.errstr + 1);
                err++;
        }
        if (c->scanner.errstr) {
                if (c->scanner.errstr[0] == '!')
                        (void)sql_error(c, 4,
-                                       "!%s%s: %s\n",
-                                       sqlstate, err, c->scanner.errstr + 1);
+                                       "SQLSTATE 42000 %s: %s\n",
+                                       err, c->scanner.errstr + 1);
                else
                        (void)sql_error(c, 4,
-                                       "!%s%s: %s in \"%.80s\"\n",
-                                       sqlstate, err, c->scanner.errstr,
+                                       "%s: %s in \"%.80s\"\n",
+                                        err, c->scanner.errstr,
                                        QUERY(c->scanner));
        } else
                (void)sql_error(c, 4,
-                               "!%s%s in: \"%.80s\"\n",
-                               sqlstate, err, QUERY(c->scanner));
+                               "%s in: \"%.80s\"\n",
+                               err, QUERY(c->scanner));
        return 1;
 }
 
diff --git a/sql/test/BugConstraints/Tests/drop_column_1643542.stable.err 
b/sql/test/BugConstraints/Tests/drop_column_1643542.stable.err
--- a/sql/test/BugConstraints/Tests/drop_column_1643542.stable.err
+++ b/sql/test/BugConstraints/Tests/drop_column_1643542.stable.err
@@ -17,7 +17,7 @@ QUERY = alter table t2 add constraint id
 ERROR = !ParseException:SQLparser:SQLSTATE 42000!CONSTRAINT PRIMARY KEY: key 
'id_p' already exists
 MAPI  = (monetdb) /var/tmp/mtest-15016/.s.monetdb.36297
 QUERY = alter table t1 drop id;
-ERROR = !ParseException:SQLparser:SQLSTATE 42000 !2BM37!ALTER TABLE: cannot 
drop column 'id': there are database objects which depend on it
+ERROR = !ParseException:SQLparser:SQLSTATE 2BM37!ALTER TABLE: cannot drop 
column 'id': there are database objects which depend on it
 
 
 # 12:57:28 >  
diff --git 
a/sql/test/BugDay_2005-10-06_2.8/Tests/string_truncate.SF-919542.stable.err 
b/sql/test/BugDay_2005-10-06_2.8/Tests/string_truncate.SF-919542.stable.err
--- a/sql/test/BugDay_2005-10-06_2.8/Tests/string_truncate.SF-919542.stable.err
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to