Changeset: 5d40cfe2119b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5d40cfe2119b
Modified Files:
        sql/server/sql_privileges.c
        sql/test/Users/Tests/grantPrivilegesNonDefaultRole.Bug-3365.stable.err
Branch: Jun2020
Log Message:

Use proper sqlstate value for grant/revoke.
01006 privilege not revoked
01007 privilege not granted


diffs (169 lines):

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
@@ -113,14 +113,14 @@ sql_grant_global_privs( mvc *sql, char *
                allowed = sql_grantable(sql, grantor, GLOBAL_OBJID, privs) == 1;
 
        if (!allowed)
-               throw(SQL,"sql.grant_global",SQLSTATE(0L000) "GRANT: Grantor 
'%s' is not allowed to grant global privileges", 
stack_get_string(sql,"current_user"));
+               throw(SQL,"sql.grant_global",SQLSTATE(01007) "GRANT: Grantor 
'%s' is not allowed to grant global privileges", 
stack_get_string(sql,"current_user"));
 
        grantee_id = sql_find_auth(sql, grantee);
        if (grantee_id <= 0)
-               throw(SQL,"sql.grant_global",SQLSTATE(42M32) "GRANT: User/role 
'%s' unknown", grantee);
+               throw(SQL,"sql.grant_global",SQLSTATE(01007) "GRANT: User/role 
'%s' unknown", grantee);
        /* first check if privilege isn't already given */
        if ((sql_privilege(sql, grantee_id, GLOBAL_OBJID, privs)))
-               throw(SQL,"sql.grant_global",SQLSTATE(42M32) "GRANT: User/role 
'%s' already has this privilege", grantee);
+               throw(SQL,"sql.grant_global",SQLSTATE(01007) "GRANT: User/role 
'%s' already has this privilege", grantee);
        sql_insert_priv(sql, grantee_id, GLOBAL_OBJID, privs, grantor, grant);
        tr->schema_updates++;
        return MAL_SUCCEED;
@@ -149,7 +149,7 @@ sql_grant_table_privs( mvc *sql, char *g
                        allowed = sql_grantable(sql, grantor, t->base.id, 
privs) == 1;
 
                if (!allowed)
-                       throw(SQL,"sql.grant_table", SQLSTATE(0L000) "GRANT: 
Grantor '%s' is not allowed to grant privileges for table '%s'", 
stack_get_string(sql,"current_user"), tname);
+                       throw(SQL,"sql.grant_table", SQLSTATE(01007) "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);
@@ -160,12 +160,12 @@ sql_grant_table_privs( mvc *sql, char *g
                        allowed = sql_grantable(sql, grantor, c->base.id, 
privs) == 1;
 
                if (!allowed)
-                       throw(SQL, "sql.grant_table", SQLSTATE(0L000) "GRANT: 
Grantor '%s' is not allowed to grant privilege %s for table '%s'", 
stack_get_string(sql, "current_user"), priv2string(privs), tname);
+                       throw(SQL, "sql.grant_table", SQLSTATE(01007) "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)
-               throw(SQL,"sql.grant_table", SQLSTATE(42M32) "GRANT: User/role 
'%s' unknown", grantee);
+               throw(SQL,"sql.grant_table", SQLSTATE(01007) "GRANT: User/role 
'%s' unknown", grantee);
        /* first check if privilege isn't already given */
        if ((privs == all &&
            (sql_privilege(sql, grantee_id, t->base.id, PRIV_SELECT) ||
@@ -175,7 +175,7 @@ sql_grant_table_privs( mvc *sql, char *g
             sql_privilege(sql, grantee_id, t->base.id, PRIV_TRUNCATE))) ||
            (privs != all && !c && sql_privilege(sql, grantee_id, t->base.id, 
privs)) ||
            (privs != all && c && sql_privilege(sql, grantee_id, c->base.id, 
privs))) {
-               throw(SQL, "sql.grant", SQLSTATE(42M32) "GRANT: User/role '%s' 
already has this privilege", grantee);
+               throw(SQL, "sql.grant", SQLSTATE(01007) "GRANT: User/role '%s' 
already has this privilege", grantee);
        }
        if (privs == all) {
                sql_insert_all_privs(sql, grantee_id, t->base.id, grantor, 
grant);
@@ -209,14 +209,14 @@ sql_grant_func_privs( mvc *sql, char *gr
                allowed = sql_grantable(sql, grantor, f->base.id, privs) == 1;
 
        if (!allowed)
-               throw(SQL, "sql.grant_func", SQLSTATE(0L000) "GRANT: Grantor 
'%s' is not allowed to grant privileges for function '%s'", 
stack_get_string(sql,"current_user"), f->base.name);
+               throw(SQL, "sql.grant_func", SQLSTATE(01007) "GRANT: Grantor 
'%s' is not allowed to grant privileges for function '%s'", 
stack_get_string(sql,"current_user"), f->base.name);
 
        grantee_id = sql_find_auth(sql, grantee);
        if (grantee_id <= 0)
-               throw(SQL, "sql.grant_func", SQLSTATE(42M32) "GRANT: User/role 
'%s' unknown", grantee);
+               throw(SQL, "sql.grant_func", SQLSTATE(01007) "GRANT: User/role 
'%s' unknown", grantee);
        /* first check if privilege isn't already given */
        if (sql_privilege(sql, grantee_id, f->base.id, privs))
-               throw(SQL,"sql.grant", SQLSTATE(42M32) "GRANT: User/role '%s' 
already has this privilege", grantee);
+               throw(SQL,"sql.grant", SQLSTATE(01007) "GRANT: User/role '%s' 
already has this privilege", grantee);
        sql_insert_priv(sql, grantee_id, f->base.id, privs, grantor, grant);
        tr->schema_updates++;
        return NULL;
@@ -258,11 +258,11 @@ sql_revoke_global_privs( mvc *sql, char 
                allowed = sql_grantable(sql, grantor, GLOBAL_OBJID, privs) == 1;
 
        if (!allowed)
-               throw(SQL, "sql.revoke_global", SQLSTATE(0L000) "REVOKE: 
Grantor '%s' is not allowed to revoke global privileges", 
stack_get_string(sql,"current_user"));
+               throw(SQL, "sql.revoke_global", SQLSTATE(01006) "REVOKE: 
Grantor '%s' is not allowed to revoke global privileges", 
stack_get_string(sql,"current_user"));
 
        grantee_id = sql_find_auth(sql, grantee);
        if (grantee_id <= 0)
-               throw(SQL, "sql.revoke_global", SQLSTATE(42M32) "REVOKE: 
User/role '%s' unknown", grantee);
+               throw(SQL, "sql.revoke_global", SQLSTATE(01006) "REVOKE: 
User/role '%s' unknown", grantee);
        sql_delete_priv(sql, grantee_id, GLOBAL_OBJID, privs, grantor, grant);
        sql->session->tr->schema_updates++;
        return NULL;
@@ -288,7 +288,7 @@ sql_revoke_table_privs( mvc *sql, char *
                allowed = sql_grantable(sql, grantor, t->base.id, privs) == 1;
 
        if (!allowed)
-               throw(SQL, "sql.revoke_table", SQLSTATE(0L000) "REVOKE: Grantor 
'%s' is not allowed to revoke privileges for table '%s'", 
stack_get_string(sql,"current_user"), tname);
+               throw(SQL, "sql.revoke_table", SQLSTATE(01006) "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);
@@ -299,12 +299,12 @@ sql_revoke_table_privs( mvc *sql, char *
                        allowed = sql_grantable(sql, grantor, c->base.id, 
privs) == 1;
 
                if (!allowed)
-                       throw(SQL, "sql.revoke_table", SQLSTATE(0L000) "REVOKE: 
Grantor '%s' is not allowed to revoke privilege %s for table '%s'", 
stack_get_string(sql, "current_user"), priv2string(privs), tname);
+                       throw(SQL, "sql.revoke_table", SQLSTATE(01006) "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)
-                throw(SQL,"sql.revoke_table", SQLSTATE(42M32) "REVOKE: 
User/role '%s' unknown", grantee);
+                throw(SQL,"sql.revoke_table", SQLSTATE(01006) "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);
@@ -339,11 +339,11 @@ sql_revoke_func_privs( mvc *sql, char *g
                allowed = sql_grantable(sql, grantor, f->base.id, privs) == 1;
 
        if (!allowed)
-               throw(SQL, "sql.revoke_func", SQLSTATE(0L000) "REVOKE: Grantor 
'%s' is not allowed to revoke privileges for function '%s'", 
stack_get_string(sql,"current_user"), f->base.name);
+               throw(SQL, "sql.revoke_func", SQLSTATE(01006) "REVOKE: Grantor 
'%s' is not allowed to revoke privileges for function '%s'", 
stack_get_string(sql,"current_user"), f->base.name);
 
        grantee_id = sql_find_auth(sql, grantee);
        if (grantee_id <= 0)
-               throw(SQL, "sql.revoke_func", SQLSTATE(42M32) "REVOKE: 
User/role '%s' unknown", grantee);
+               throw(SQL, "sql.revoke_func", SQLSTATE(01006) "REVOKE: 
User/role '%s' unknown", grantee);
        sql_delete_priv(sql, grantee_id, f->base.id, privs, grantor, grant);
        sql->session->tr->schema_updates++;
        return NULL;
@@ -584,14 +584,14 @@ sql_revoke_role(mvc *m, str grantee, str
 
        rid = table_funcs.column_find_row(m->session->tr, auths_name, grantee, 
NULL);
        if (is_oid_nil(rid))
-               throw(SQL,"sql.revoke_role", SQLSTATE(42M32) "REVOKE: no such 
role '%s' or grantee '%s'", role, grantee);
+               throw(SQL,"sql.revoke_role", SQLSTATE(01006) "REVOKE: no such 
role '%s' or grantee '%s'", role, grantee);
        val = table_funcs.column_find_value(m->session->tr, auths_id, rid);
        grantee_id = *(sqlid*)val;
        _DELETE(val);
 
        rid = table_funcs.column_find_row(m->session->tr, auths_name, role, 
NULL);
        if (is_oid_nil(rid))
-               throw(SQL,"sql.revoke_role", SQLSTATE(42M32) "REVOKE: no such 
role '%s' or grantee '%s'", role, grantee);
+               throw(SQL,"sql.revoke_role", SQLSTATE(01006) "REVOKE: no such 
role '%s' or grantee '%s'", role, grantee);
        val = table_funcs.column_find_value(m->session->tr, auths_id, rid);
        role_id = *(sqlid*)val;
        _DELETE(val);
@@ -603,13 +603,13 @@ sql_revoke_role(mvc *m, str grantee, str
                if (!is_oid_nil(rid))
                        table_funcs.table_delete(m->session->tr, roles, rid);
                else
-                       throw(SQL,"sql.revoke_role", SQLSTATE(42M32) "REVOKE: 
User '%s' does not have ROLE '%s'", grantee, role);
+                       throw(SQL,"sql.revoke_role", SQLSTATE(01006) "REVOKE: 
User '%s' does not have ROLE '%s'", grantee, role);
        } else {
                rid = sql_privilege_rid(m, grantee_id, role_id, 
PRIV_ROLE_ADMIN);
                if (!is_oid_nil(rid))
                        table_funcs.table_delete(m->session->tr, roles, rid);
                else
-                       throw(SQL,"sql.revoke_role", SQLSTATE(42M32) "REVOKE: 
User '%s' does not have ROLE '%s'", grantee, role);
+                       throw(SQL,"sql.revoke_role", SQLSTATE(01006) "REVOKE: 
User '%s' does not have ROLE '%s'", grantee, role);
        }
        m->session->tr->schema_updates++;
        return NULL;
diff --git 
a/sql/test/Users/Tests/grantPrivilegesNonDefaultRole.Bug-3365.stable.err 
b/sql/test/Users/Tests/grantPrivilegesNonDefaultRole.Bug-3365.stable.err
--- a/sql/test/Users/Tests/grantPrivilegesNonDefaultRole.Bug-3365.stable.err
+++ b/sql/test/Users/Tests/grantPrivilegesNonDefaultRole.Bug-3365.stable.err
@@ -33,7 +33,7 @@ stderr of test 'grantPrivilegesNonDefaul
 MAPI  = (blake) /var/tmp/mtest-15247/.s.monetdb.36393
 QUERY = grant select on employees to clark;
 ERROR = !GRANT: Grantor 'blake' is not allowed to grant privileges for table 
'employees'
-CODE  = 0L000
+CODE  = 01007
 
 # 17:10:02 >  
 # 17:10:02 >  "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to