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]