Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv10860/backends/monet5
Modified Files:
sql_user.mx
Log Message:
implemented feature request #2830257, ALTER USER xxx RENAME TO yyy
U sql_user.mx
Index: sql_user.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_user.mx,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- sql_user.mx 12 Aug 2009 17:40:40 -0000 1.49
+++ sql_user.mx 25 Sep 2009 12:54:28 -0000 1.50
@@ -94,8 +94,7 @@
* user was already removed from the system authorisation. Once
* we have warnings, we could issue a warning about this
* (seemingly) inconsistency between system and sql shadow
- * administration.
- */
+ * administration. */
return TRUE;
}
@@ -139,8 +138,8 @@
user_id = store_next_oid();
db_user_info = find_sql_table(s, "db_user_info");
auths = find_sql_table(s, "auths");
- table_funcs.table_insert(m->session->tr, db_user_info, user, fullname,
&schema_id );
- table_funcs.table_insert(m->session->tr, auths, &user_id, user,
&grantorid );
+ table_funcs.table_insert(m->session->tr, db_user_info, user, fullname,
&schema_id);
+ table_funcs.table_insert(m->session->tr, auths, &user_id, user,
&grantorid);
return NULL;
}
@@ -353,6 +352,48 @@
return TRUE;
}
+static int
+monet5_rename_user(ptr _mvc, str olduser, str newuser)
+{
+ mvc *m = (mvc *)_mvc;
+ Client c = &mal_clients[m->clientid];
+ str err;
+ oid rid;
+ sql_schema *sys = find_sql_schema(m->session->tr, "sys");
+ sql_table *info = find_sql_table(sys, "db_user_info");
+ sql_column *users_name = find_sql_column(info, "name");
+ sql_table *auths = find_sql_table(sys, "auths");
+ sql_column *auths_name = find_sql_column(auths, "name");
+
+ if ((err = AUTHchangeUsername(&c, &olduser, &newuser)) != MAL_SUCCEED) {
+ (void)sql_error(m, 02, "ALTER USER: %s", err);
+ GDKfree(err);
+ return(FALSE);
+ }
+
+ rid = table_funcs.column_find_row(m->session->tr, users_name,
+ olduser, NULL);
+ if (rid == oid_nil) {
+ (void)sql_error(m, 02, "ALTER USER: local inconsistency, "
+ "your database is damaged, user not found in
SQL catalog");
+ return(FALSE);
+ }
+ table_funcs.column_update_value(m->session->tr, users_name, rid,
+ newuser);
+
+ rid = table_funcs.column_find_row(m->session->tr, auths_name,
+ olduser, NULL);
+ if (rid == oid_nil) {
+ (void)sql_error(m, 02, "ALTER USER: local inconsistency, "
+ "your database is damaged, auth not found in
SQL catalog");
+ return(FALSE);
+ }
+ table_funcs.column_update_value(m->session->tr, auths_name, rid,
+ newuser);
+
+ return(TRUE);
+}
+
void*
monet5_schema_user_dependencies(ptr _trans, int schema_id)
{
@@ -367,7 +408,7 @@
sql_column *users_name = find_sql_column(users, "name");
sql_column *users_sch = find_sql_column(users, "default_schema");
- /* select users with give schema */
+ /* select users with given schema */
U = table_funcs.rids_select(tr, users_sch, &schema_id, &schema_id,
NULL);
/* select all authorization ids */
A = table_funcs.rids_select(tr, auth_name, NULL, NULL);
@@ -386,6 +427,7 @@
be_funcs->fcrpriv = &monet5_create_privileges;
be_funcs->fshuser = &monet5_schema_has_user;
be_funcs->fauser = &monet5_alter_user;
+ be_funcs->fruser = &monet5_rename_user;
be_funcs->fschuserdep = &monet5_schema_user_dependencies;
}
------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins