Create user or role from inside a function? - Mailing list pgsql-general

From Dan
Subject Create user or role from inside a function?
Date
Msg-id 39844.203.143.226.132.1157105594.squirrel@secure.x32i.net
Whole thread Raw
Responses Re: Create user or role from inside a function?  (Roman Neuhauser <neuhauser@sigpipe.cz>)
Re: Create user or role from inside a function?  (Martijn van Oosterhout <kleptog@svana.org>)
Re: Create user or role from inside a function?  (Karsten Hilbert <Karsten.Hilbert@gmx.net>)
Re: Create user or role from inside a function?  (Andreas Kretschmer <akretschmer@spamfence.net>)
List pgsql-general
Hey,

I am running PostgreSQL 8.1.4 and I want to create a user from inside a
function. Is this possible in 8.1?

Ive found quite a few references on google using EXECUTE, but this seems
relevant to earlier versions, not 8.1.

I have a function like this:

CREATE FUNCTION user_create (un varchar, uid bigint, pw varchar) RETURNS
VARCHAR LANGUAGE plpgsql AS '
  BEGIN
    EXECUTE "CREATE USER " || un || " WITH PASSWORD " || pw;

    RETURN un;
  END
';

Executing this function yields:

# SELECT user_create('bob',1234,'bobspassword');
ERROR:  column "CREATE USER " does not exist
CONTEXT:  SQL statement "SELECT  "CREATE USER " ||  $1  || " WITH PASSWORD
" ||  $2 "
PL/pgSQL function "user_create" line 2 at execute statement

Directly executing CREATE USER in this function also fails.. CREATE USER
$1 appears to be what is being executed.

Any tips would be appreciated.

Cheers,

Dan

pgsql-general by date:

Previous
From: "SunWuKung"
Date:
Subject: Re: number of elements in a multidimensional array
Next
From: Roman Neuhauser
Date:
Subject: Re: Create user or role from inside a function?