Unexpected error in grant/revoke script

From: "Webb Sprague" <webb(dot)sprague(at)gmail(dot)com>
To:
Cc: pgsql-general(at)postgresql(dot)org
Subject: Unexpected error in grant/revoke script
Date: 2008-03-14 17:00:05
Message-ID: b11ea23c0803141000i15f497edj53c950f81fd2fc9f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi all,

I have the following function:

create function new_student (text) returns text as $$
declare
wtf integer := 1;
begin
execute 'create schema ' || $1;
execute 'create role ' || $1 || 'LOGIN';
execute 'revoke all on schema public from ' || $1;
execute 'grant select on schema public to ' || $1;
execute 'grant all on schema ' || $1 || ' to ' || $1 || '
with grant option';
return $1;
end;
$$ language plpgsql
;

When I run this with select new_student('foobar'), I get the following
error message

oregon=# \i new_student.sql
CREATE FUNCTION
oregon=# select new_student('foobar');
ERROR: role "foobar" does not exist
CONTEXT: SQL statement "revoke all on schema public from foobar"
PL/pgSQL function "new_student" line 6 at EXECUTE statement

However, I can run the following from the command line just fine:
# create role foobar login;
# revoke all on schema public from foobar;

Can anyone explain and help me fix? TIA.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Webb Sprague 2008-03-14 17:03:19 Unexpected message in grant/revoke script
Previous Message Dave Page 2008-03-14 16:51:24 Re: postgre vs MySQL