Update of /cvsroot/monetdb/sql/src/server
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv10860/server
Modified Files:
rel_semantic.mx sql_parser.mx sql_privileges.mx sql_scan.mx
sql_schema.mx sql_semantic.mx
Log Message:
implemented feature request #2830257, ALTER USER xxx RENAME TO yyy
U sql_semantic.mx
Index: sql_semantic.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_semantic.mx,v
retrieving revision 1.196
retrieving revision 1.197
diff -u -d -r1.196 -r1.197
--- sql_semantic.mx 25 Jul 2009 22:08:38 -0000 1.196
+++ sql_semantic.mx 25 Sep 2009 12:54:30 -0000 1.197
@@ -1017,6 +1017,7 @@
case SQL_CREATE_USER:
case SQL_DROP_USER:
case SQL_ALTER_USER:
+ case SQL_RENAME_USER:
case SQL_CREATE_ROLE:
case SQL_DROP_ROLE:
case SQL_GRANT:
U sql_schema.mx
Index: sql_schema.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_schema.mx,v
retrieving revision 1.180
retrieving revision 1.181
diff -u -d -r1.180 -r1.181
--- sql_schema.mx 21 Sep 2009 14:13:44 -0000 1.180
+++ sql_schema.mx 25 Sep 2009 12:54:29 -0000 1.181
@@ -996,6 +996,24 @@
return stmt_none();
}
+static stmt *
+rename_user(mvc *sql, char *olduser, char *newuser)
+{
+ if (backend_find_user(sql, olduser) < 0)
+ return sql_error(sql, 02, "ALTER USER: no such user '%s'",
olduser);
+ if (backend_find_user(sql, newuser) >= 0)
+ return sql_error(sql, 02, "ALTER USER: user '%s' already
exists",
+ newuser);
+
+ if (sql->user_id != USER_MONETDB && sql->role_id != ROLE_SYSADMIN)
+ return sql_error(sql, 02, "ALTER USER: insufficient privileges
to "
+ "rename user '%s'", olduser);
+
+ sql_rename_user(sql, olduser, newuser);
+
+ return stmt_none();
+}
+
static stmt *
create_role(mvc *sql, dlist *qname, int grantor)
@@ -2126,6 +2144,14 @@
sql->type = Q_SCHEMA;
}
break;
+ case SQL_RENAME_USER:
+ {
+ dlist *l = s->data.lval;
+
+ ret = rename_user(sql, l->h->data.sval, l->h->next->data.sval);
+ sql->type = Q_SCHEMA;
+ }
+ break;
case SQL_CREATE_ROLE:
{
dlist *l = s->data.lval;
U rel_semantic.mx
Index: rel_semantic.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_semantic.mx,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- rel_semantic.mx 13 Sep 2009 11:24:03 -0000 1.39
+++ rel_semantic.mx 25 Sep 2009 12:54:29 -0000 1.40
@@ -197,6 +197,7 @@
case SQL_CREATE_USER:
case SQL_DROP_USER:
case SQL_ALTER_USER:
+ case SQL_RENAME_USER:
case SQL_CREATE_ROLE:
case SQL_DROP_ROLE:
case SQL_GRANT:
U sql_privileges.mx
Index: sql_privileges.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_privileges.mx,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- sql_privileges.mx 12 Aug 2009 17:40:44 -0000 1.68
+++ sql_privileges.mx 25 Sep 2009 12:54:29 -0000 1.69
@@ -49,6 +49,7 @@
extern int sql_grant_role(mvc *m, str grantee, str auth);
extern int sql_revoke_role(mvc *m, str grantee, str auth);
extern int sql_alter_user(mvc *m, str user, str passwd, char enc, sqlid
schema_id, str oldpasswd);
+extern int sql_rename_user(mvc *m, str olduser, str newuser);
extern int sql_drop_user(mvc *m, str user);
extern int sql_create_privileges(mvc *m, sql_schema *s);
extern int sql_schema_has_user(mvc *m, sql_schema *s);
@@ -230,6 +231,12 @@
}
int
+sql_rename_user(mvc *m, str olduser, str newuser)
+{
+ return(backend_rename_user(m, olduser, newuser));
+}
+
+int
sql_drop_user(mvc *m, str user)
{
if (backend_drop_user(m,user) == FALSE)
U sql_scan.mx
Index: sql_scan.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_scan.mx,v
retrieving revision 1.154
retrieving revision 1.155
diff -u -d -r1.154 -r1.155
--- sql_scan.mx 13 Sep 2009 11:22:34 -0000 1.154
+++ sql_scan.mx 25 Sep 2009 12:54:29 -0000 1.155
@@ -202,6 +202,7 @@
keywords_insert("PRIMARY", PRIMARY);
keywords_insert("USER", USER);
+ keywords_insert("RENAME", RENAME);
keywords_insert("UNENCRYPTED", UNENCRYPTED);
keywords_insert("ENCRYPTED", ENCRYPTED);
keywords_insert("PASSWORD", PASSWORD);
U sql_parser.mx
Index: sql_parser.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_parser.mx,v
retrieving revision 1.321
retrieving revision 1.322
diff -u -d -r1.321 -r1.322
--- sql_parser.mx 21 Sep 2009 14:13:40 -0000 1.321
+++ sql_parser.mx 25 Sep 2009 12:54:29 -0000 1.322
@@ -60,6 +60,7 @@
SQL_ALTER_TABLE,
SQL_ALTER_SEQ,
SQL_ALTER_USER,
+ SQL_RENAME_USER,
SQL_DROP_COLUMN,
SQL_DROP_CONSTRAINT,
SQL_DROP_DEFAULT,
@@ -699,7 +700,7 @@
%token SQL_EXPLAIN SQL_PLAN SQL_DEBUG SQL_TRACE PREPARE EXECUTE
%token DEFAULT DISTINCT DROP
%token FOREIGN
-%token ENCRYPTED UNENCRYPTED PASSWORD GRANT REVOKE ROLE ADMIN INTO
+%token RENAME ENCRYPTED UNENCRYPTED PASSWORD GRANT REVOKE ROLE ADMIN INTO
%token IS KEY ON OPTION OPTIONS
%token PATH PRIMARY PRIVILEGES
%token<sval> PUBLIC REFERENCES SCHEMA SET AUTO_COMMIT
@@ -1096,6 +1097,11 @@
append_string(l, $3);
append_list(l, $4);
$$ = _symbol_create_list( SQL_ALTER_USER, l ); }
+ | ALTER USER ident RENAME TO ident
+ { dlist *l = L();
+ append_string(l, $3);
+ append_string(l, $6);
+ $$ = _symbol_create_list( SQL_RENAME_USER, l ); }
| ALTER USER SET opt_encrypted PASSWORD string USING OLD PASSWORD string
{ dlist *l = L();
dlist *p = L();
------------------------------------------------------------------------------
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