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

Reply via email to