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