Changeset: 164df0b1f300 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=164df0b1f300
Modified Files:
        java/SQLSTATEs
        sql/server/sql_privileges.c
Branch: Dec2011
Log Message:

SQL: add SQLSTATE for errors from sql_privileges


diffs (214 lines):

diff --git a/java/SQLSTATEs b/java/SQLSTATEs
--- a/java/SQLSTATEs
+++ b/java/SQLSTATEs
@@ -3,7 +3,7 @@ 01M02 redirect warning
 M0M03 illegal arguments (invalid call of internal function)
 01M03 illegal arguments (invalid call of internal function)
 M0M04 only supported in SQL mode
-M1M05 invalid argument (to JDBC method)
+M1M05 invalid argument (user supplied)
 M0M06 savepoint is not MonetSavepoint
 01M07 unrecognised clientinfo property
 01M08 read-only conection mode not supported
@@ -32,3 +32,5 @@ 22M28 invalid BLOB format
 M0M29 assert
 3BM30 autocommit mode active
 2DM30 autocommit mode active
+M1M31 no such object
+M1M32 object already exists
diff --git a/sql/server/sql_privileges.c b/sql/server/sql_privileges.c
--- a/sql/server/sql_privileges.c
+++ b/sql/server/sql_privileges.c
@@ -81,30 +81,30 @@ sql_grant_table_privs( mvc *sql, char *g
        int all = PRIV_SELECT | PRIV_UPDATE | PRIV_INSERT | PRIV_DELETE;
 
        if (!t) 
-               return sql_message("GRANT no such table '%s'", tname);
+               return sql_message("M1M31:GRANT no such table '%s'", tname);
 
        allowed = schema_privs(grantor, t->s);
        if (!allowed)
                allowed = sql_grantable(sql, grantor, t->base.id, all, 0);
 
        if (!allowed) 
-               return sql_message("GRANTOR '%s' is not allowed to grant 
privileges for table '%s'", stack_get_string(sql,"current_user"), tname);
+               return sql_message("0L000:GRANT: grantor '%s' is not allowed to 
grant privileges for table '%s'", stack_get_string(sql,"current_user"), tname);
 
        if (cname) { 
                c = mvc_bind_column(sql, t, cname);
                if (!c) 
-                       return sql_message("GRANT: table %s has no column %s", 
tname, cname);
+                       return sql_message("M1M31:GRANT: table %s has no column 
%s", tname, cname);
                /* allowed on column */
                if (!allowed)
                        allowed = sql_grantable(sql, grantor, c->base.id, 
privs, 0);
 
                if (!allowed) 
-                       return sql_message("GRANTOR %s is not allowed to grant 
privilege %s for table %s", stack_get_string(sql, "current_user"), 
priv2string(privs), tname);
+                       return sql_message("0L000:GRANT: grantor %s is not 
allowed to grant privilege %s for table %s", stack_get_string(sql, 
"current_user"), priv2string(privs), tname);
        }
 
        grantee_id = sql_find_auth(sql, grantee);
        if (grantee_id <= 0) 
-               return sql_message("User/Role '%s' unknown", grantee);
+               return sql_message("M1M31:GRANT: user/role '%s' unknown", 
grantee);
        if (privs == all)
                sql_insert_all_privs(sql, grantee_id, t->base.id, grantor, 
grant);
        else if (!c)
@@ -148,30 +148,30 @@ sql_revoke_table_privs( mvc *sql, char *
        int all = PRIV_SELECT | PRIV_UPDATE | PRIV_INSERT | PRIV_DELETE;
 
        if (!t) 
-               return sql_message("REVOKE Table name %s doesn't exist", tname);
+               return sql_message("M1M31:REVOKE: no such table '%s'", tname);
 
        allowed = schema_privs(grantor, t->s);
        if (!allowed)
                allowed = sql_grantable(sql, grantor, t->base.id, all, 0);
 
        if (!allowed) 
-               return sql_message("GRANTOR '%s' is not allowed to revoke 
privileges for table '%s'", stack_get_string(sql,"current_user"), tname);
+               return sql_message("0L000:REVOKE: grantor '%s' is not allowed 
to revoke privileges for table '%s'", stack_get_string(sql,"current_user"), 
tname);
 
        if (cname) { 
                c = mvc_bind_column(sql, t, cname);
                if (!c) 
-                       return sql_message("REVOKE: table %s has no column %s", 
tname, cname);
+                       return sql_message("M1M31:REVOKE: table %s has no 
column %s", tname, cname);
                /* allowed on column */
                if (!allowed)
                        allowed = sql_grantable(sql, grantor, c->base.id, 
privs, 0);
 
                if (!allowed) 
-                       return sql_message("GRANTOR %s is not allowed to revoke 
privilege %s for table %s", stack_get_string(sql, "current_user"), 
priv2string(privs), tname);
+                       return sql_message("0L000:REVOKE: grantor %s is not 
allowed to revoke privilege %s for table %s", stack_get_string(sql, 
"current_user"), priv2string(privs), tname);
        }
 
        grantee_id = sql_find_auth(sql, grantee);
        if (grantee_id <= 0) 
-               return sql_message("User/Role '%s' unknown", grantee);
+               return sql_message("M1M31:REVOKE: user/role '%s' unknown", 
grantee);
        if (privs == all) {
                sql_delete_priv(sql, grantee_id, t->base.id, PRIV_SELECT, 
grantor, grant);
                sql_delete_priv(sql, grantee_id, t->base.id, PRIV_UPDATE, 
grantor, grant);
@@ -207,7 +207,7 @@ sql_create_role(mvc *m, str auth, int gr
        sql_column *auth_name = find_sql_column(auths, "name");
 
        if (table_funcs.column_find_row(m->session->tr, auth_name, auth, NULL) 
!= oid_nil)
-               return sql_message("CREATE ROLE: Role '%s' allready exists\n", 
auth);
+               return sql_message("0P000:CREATE ROLE: role '%s' already 
exists", auth);
 
        id = store_next_oid();
        table_funcs.table_insert(m->session->tr, auths, &id, auth, &grantor);
@@ -224,7 +224,7 @@ sql_drop_role(mvc *m, str auth)
 
        rid = table_funcs.column_find_row(m->session->tr, auth_name, auth, 
NULL);
        if (rid == oid_nil)
-               return sql_message("DROP ROLE: Role '%s' does not exist\n", 
auth);
+               return sql_message("0P000:DROP ROLE: no such role '%s'", auth);
        table_funcs.table_delete(m->session->tr, auths, rid);
        return NULL;
 }
@@ -243,13 +243,13 @@ sql_grant_role(mvc *m, str grantee, str 
 
        rid = table_funcs.column_find_row(m->session->tr, auths_name, grantee, 
NULL);
        if (rid == oid_nil)
-               return sql_message("GRANT: cannot grant ROLE '%s' to ROLE 
'%s'", grantee, auth );
+               return sql_message("M1M05:GRANT: cannot grant ROLE '%s' to ROLE 
'%s'", grantee, auth );
        grantee_id = table_funcs.column_find_value(m->session->tr, auths_id, 
rid);
 
        rid = table_funcs.column_find_row(m->session->tr, auths_name, auth, 
NULL);
        if (rid == oid_nil) {
                _DELETE(grantee_id);
-               return sql_message("GRANT: cannot grant ROLE '%s' to ROLE 
'%s'", grantee, auth );
+               return sql_message("M1M05:GRANT: cannot grant ROLE '%s' to ROLE 
'%s'", grantee, auth );
        }
        auth_id = table_funcs.column_find_value(m->session->tr, auths_id, rid);
 
@@ -276,13 +276,13 @@ sql_revoke_role(mvc *m, str grantee, str
 
        rid = table_funcs.column_find_row(m->session->tr, auths_name, grantee, 
NULL);
        if (rid == oid_nil)
-               return sql_message("REVOKE no such role '%s' or grantee '%s'", 
auth, grantee);
+               return sql_message("M1M31:REVOKE: no such role '%s' or grantee 
'%s'", auth, grantee);
        grantee_id = table_funcs.column_find_value(m->session->tr, auths_id, 
rid);
 
        rid = table_funcs.column_find_row(m->session->tr, auths_name, auth, 
NULL);
        if (rid == oid_nil) {
                _DELETE(grantee_id);
-               return sql_message("REVOKE no such role '%s' or grantee '%s'", 
auth, grantee);
+               return sql_message("M1M31:REVOKE: no such role '%s' or grantee 
'%s'", auth, grantee);
        }
        auth_id = table_funcs.column_find_value(m->session->tr, auths_id, rid);
 
@@ -484,15 +484,15 @@ sql_create_user(mvc *sql, char *user, ch
        int schema_id = 0;
 
        if (backend_find_user(sql, user) >= 0) {
-               return sql_message("CREATE USER: user '%s' already exists", 
user);
+               return sql_message("M1M32:CREATE USER: user '%s' already 
exists", user);
        }
        if ((schema_id = sql_find_schema(sql, schema)) < 0) {
-               return sql_message("CREATE USER: no such schema '%s'", schema);
+               return sql_message("M1M31:CREATE USER: no such schema '%s'", 
schema);
        }
        if ((err = backend_create_user(sql, user, passwd, enc, fullname,
                                        schema_id, sql->user_id)) != NULL)
        {
-               char *r = sql_message("CREATE USER: %s", err);
+               char *r = sql_message("M0M27:CREATE USER: %s", err);
                GDKfree(err);
                return r;
        }
@@ -505,9 +505,9 @@ sql_drop_user(mvc *sql, char *user)
        int user_id = sql_find_auth(sql, user);
 
        if (mvc_check_dependency(sql, user_id, OWNER_DEPENDENCY, NULL))
-               return sql_message("DROP USER: '%s' owns a schema", user);
+               return sql_message("M1M05:DROP USER: '%s' owns a schema", user);
        if (backend_drop_user(sql,user) == FALSE)
-               return sql_message("%s", sql->errstr);
+               return sql_message("M0M27:%s", sql->errstr);
        return sql_drop_role(sql, user);
 }
 
@@ -521,15 +521,15 @@ sql_alter_user(mvc *sql, char *user, cha
                user = NULL;
        /* USER == NULL -> current_user */
        if (user != NULL && backend_find_user(sql, user) < 0)
-               return sql_message("ALTER USER: no such user '%s'", user);
+               return sql_message("M1M31:ALTER USER: no such user '%s'", user);
 
        if (sql->user_id != USER_MONETDB && sql->role_id != ROLE_SYSADMIN && 
user != NULL && strcmp(user, stack_get_string(sql, "current_user")) != 0)
-               return sql_message("ALTER USER: insufficient privileges to 
change user '%s'", user);
+               return sql_message("M1M05:ALTER USER: insufficient privileges 
to change user '%s'", user);
        if (schema && (schema_id = sql_find_schema(sql, schema)) < 0) {
-               return sql_message("ALTER USER: no such schema '%s'", schema);
+               return sql_message("M1M31:ALTER USER: no such schema '%s'", 
schema);
        }
        if (backend_alter_user(sql, user, passwd, enc, schema_id, oldpasswd) == 
FALSE)
-               return sql_message("%s", sql->errstr);
+               return sql_message("M0M27:%s", sql->errstr);
        return NULL;
 }
 
@@ -537,15 +537,15 @@ char *
 sql_rename_user(mvc *sql, char *olduser, char *newuser)
 {
        if (backend_find_user(sql, olduser) < 0)
-               return sql_message("ALTER USER: no such user '%s'", olduser);
+               return sql_message("M1M31:ALTER USER: no such user '%s'", 
olduser);
        if (backend_find_user(sql, newuser) >= 0)
-               return sql_message("ALTER USER: user '%s' already exists", 
newuser);
+               return sql_message("M1M32:ALTER USER: user '%s' already 
exists", newuser);
        if (sql->user_id != USER_MONETDB && sql->role_id != ROLE_SYSADMIN)
-               return sql_message("ALTER USER: insufficient privileges to "
+               return sql_message("M1M05:ALTER USER: insufficient privileges 
to "
                                "rename user '%s'", olduser);
 
        if (backend_rename_user(sql, olduser, newuser) == FALSE)
-               return sql_message("%s", sql->errstr);
+               return sql_message("M1M05:%s", sql->errstr);
        return NULL;
 
 }
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to