Changeset: b8236da3f63a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b8236da3f63a
Modified Files:
        sql/backends/monet5/sql_user.c
        sql/server/sql_parser.y
Branch: userprofile
Log Message:

fix alter stmt


diffs (63 lines):

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
@@ -451,6 +451,23 @@ monet5_alter_user(ptr _mvc, str user, st
        Client c = MCgetClient(m->clientid);
        str err;
        int res = LOG_OK;
+       oid rid;
+
+       sqlstore *store = m->session->tr->store;
+       sql_schema *sys = find_sql_schema(m->session->tr, "sys");
+       sql_table *info = find_sql_table(m->session->tr, sys, "db_user_info");
+       sql_column *users_name = find_sql_column(info, "name");
+
+       if (schema_id || schema_path || role_id) {
+               rid = store->table_api.column_find_row(m->session->tr, 
users_name, user, NULL);
+               // user should be checked here since the way `ALTER USER ident 
...` stmt is
+               if (is_oid_nil(rid)) {
+                       (void) sql_error(m, 02, "ALTER USER: local 
inconsistency, "
+                                "your database is damaged, auth not found in 
SQL catalog");
+                       return FALSE;
+               }
+       }
+
 
        if (passwd != NULL) {
                str pwd = NULL;
@@ -522,16 +539,6 @@ monet5_alter_user(ptr _mvc, str user, st
                }
        }
 
-       sqlstore *store = m->session->tr->store;
-       sql_schema *sys = find_sql_schema(m->session->tr, "sys");
-       sql_table *info = find_sql_table(m->session->tr, sys, "db_user_info");
-       sql_column *users_name = find_sql_column(info, "name");
-
-       oid rid = store->table_api.column_find_row(m->session->tr, users_name, 
user, NULL);
-       if (is_oid_nil(rid)) {
-               (void) sql_error(m, 02, "ALTER USER: user not found");
-               return FALSE;
-       }
 
        if (schema_id) {
                sql_column *users_schema = find_sql_column(info, 
"default_schema");
@@ -543,6 +550,7 @@ monet5_alter_user(ptr _mvc, str user, st
                }
        }
 
+
        if (schema_path) {
                sql_column *sp = find_sql_column(info, "schema_path");
 
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
@@ -1262,6 +1262,7 @@ alter_statement:
          append_int(p, $4);
          append_string(p, $10);
          append_list(l, p);
+         append_string(l, NULL);
          $$ = _symbol_create_list( SQL_ALTER_USER, l ); }
  | ALTER SCHEMA if_exists ident RENAME TO ident
        { dlist *l = L();
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to