1 drop function if exists xt.grant_role_ext(text, text);
3 create or replace function xt.grant_role_ext(role_name text, ext_name text) returns boolean volatile as $$
5 var sqlCount = "select count(*) as count from xt.grpext where grpext_grp_id = $1 and grpext_ext_id = $2;",
6 sqlInsert = "insert into xt.grpext (grpext_grp_id, grpext_ext_id) values ($1, $2);",
7 sqlRoleId = "select grp_id from public.grp where grp_name = $1;",
8 sqlExtId = "select ext_id from xt.ext where ext_name = $1;",
9 role = plv8.execute(sqlRoleId, [role_name.toUpperCase()]),
10 ext = plv8.execute(sqlExtId, [ext_name]),
15 if (!role.length || !ext.length) {
16 plv8.elog(WARNING, "Cannot grant Role: ", role_name, " Extension: ", ext_name, ". The Role or Extension has not been created yet.");
20 roleId = role[0].grp_id;
21 extId = ext[0].grp_id;
22 count = plv8.execute(sqlCount, [roleId, extId])[0].count;
29 plv8.execute(sqlInsert, [roleId, extId]);