Changeset: a4416f9cbd96 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a4416f9cbd96
Modified Files:
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_user.c
Branch: Jul2021
Log Message:
Fix error messages while getting/setting user's default schema
diffs (75 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
@@ -654,13 +654,18 @@ SQLtrans(mvc *m)
}
s = m->session;
if (!s->schema) {
- if (monet5_user_get_def_schema(m, m->user_id,
&s->schema_name) < 0) {
- mvc_cancel_session(m);
- throw(SQL, "sql.trans", SQLSTATE(42000) "The
user was not found in the database, this session is going to terminate");
- }
- if (!s->schema_name) {
- mvc_cancel_session(m);
- throw(SQL, "sql.trans", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
+ switch (monet5_user_get_def_schema(m, m->user_id,
&s->schema_name)) {
+ case -1:
+ mvc_cancel_session(m);
+ throw(SQL, "sql.trans", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
+ case -2:
+ mvc_cancel_session(m);
+ throw(SQL, "sql.trans", SQLSTATE(42000)
"The user was not found in the database, this session is going to terminate");
+ case -3:
+ mvc_cancel_session(m);
+ throw(SQL, "sql.trans", SQLSTATE(42000)
"The user's default schema was not found, this session is going to terminate");
+ default:
+ break;
}
if (!(s->schema = find_sql_schema(s->tr,
s->schema_name))) {
mvc_cancel_session(m);
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -572,21 +572,24 @@ monet5_user_get_def_schema(mvc *m, int u
rid = store->table_api.column_find_row(m->session->tr,
find_sql_column(auths, "id"), &user, NULL);
if (is_oid_nil(rid))
- return -1;
+ return -2;
username = store->table_api.column_find_string_start(m->session->tr,
find_sql_column(auths, "name"), rid, &cbat);
rid = store->table_api.column_find_row(m->session->tr,
find_sql_column(user_info, "name"), username, NULL);
store->table_api.column_find_string_end(cbat);
if (!is_oid_nil(rid))
schema_id = store->table_api.column_find_sqlid(m->session->tr,
find_sql_column(user_info, "default_schema"), rid);
- if (!is_int_nil(schema_id)) {
- rid = store->table_api.column_find_row(m->session->tr,
find_sql_column(schemas, "id"), &schema_id, NULL);
- if (!is_oid_nil(rid)) {
- str sname =
store->table_api.column_find_string_start(m->session->tr,
find_sql_column(schemas, "name"), rid, &cbat);
- *schema = sa_strdup(m->session->sa, sname);
- store->table_api.column_find_string_end(cbat);
- }
- }
+ if (is_int_nil(schema_id))
+ return -3;
+ rid = store->table_api.column_find_row(m->session->tr,
find_sql_column(schemas, "id"), &schema_id, NULL);
+ if (is_oid_nil(rid))
+ return -3;
+
+ str sname = store->table_api.column_find_string_start(m->session->tr,
find_sql_column(schemas, "name"), rid, &cbat);
+ *schema = sa_strdup(m->session->sa, sname);
+ store->table_api.column_find_string_end(cbat);
+ if (!*schema)
+ return -1;
return 0;
}
@@ -614,7 +617,7 @@ monet5_user_set_def_schema(mvc *m, oid u
if ((err = AUTHresolveUser(&username, user)) != MAL_SUCCEED) {
freeException(err);
- return -2;
+ return -1;
}
if ((res = mvc_trans(m)) < 0) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list