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