Thread: create one function to let other user execute vacuum command. got such an error.
create one function to let other user execute vacuum command. got such an error.
From
leaf_yxj
Date:
create one function to let other user execute vacuum command. got such an error. Please help. Thanks. Regards . Grace rrp=> create function vacuum_f ( tablename char(100)) Returns char(100) AS $$ vacuum tablename; $$ Language plpgsql security definer; ERROR: syntax error at or near "vacuum" LINE 3: vacuum tablename; ^ rrp=> -- View this message in context: http://postgresql.1045698.n5.nabble.com/create-one-function-to-let-other-user-execute-vacuum-command-got-such-an-error-tp5599318p5599318.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.
Re: create one function to let other user execute vacuum command. got such an error.
From
Guillaume Lelarge
Date:
On Tue, 2012-03-27 at 18:51 -0700, leaf_yxj wrote: > create one function to let other user execute vacuum command. got such an > error. Please help. Thanks. Regards . Grace > > rrp=> create function vacuum_f ( tablename char(100)) > Returns char(100) AS $$ > vacuum tablename; > $$ Language plpgsql security definer; > ERROR: syntax error at or near "vacuum" > LINE 3: vacuum tablename; > ^ > rrp=> > Well, first, it doesn't follow PL/pgsql guidelines. You need at least a BEGIN at the beginning of the function, and an END at the end. But even with this, you cannot use VACUUM in a function. Don't remember the reason why right now, but all you'll get is this error: ERROR: VACUUM cannot be executed from a function or multi-command string -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Re: create one function to let other user execute vacuum command. got such an error.
From
Greg Jaskiewicz
Date:
On 28 Mar 2012, at 07:44, Guillaume Lelarge wrote: > On Tue, 2012-03-27 at 18:51 -0700, leaf_yxj wrote: >> create one function to let other user execute vacuum command. got such an >> error. Please help. Thanks. Regards . Grace >> >> rrp=> create function vacuum_f ( tablename char(100)) >> Returns char(100) AS $$ >> vacuum tablename; >> $$ Language plpgsql security definer; >> ERROR: syntax error at or near "vacuum" >> LINE 3: vacuum tablename; >> ^ >> rrp=> >> > > Well, first, it doesn't follow PL/pgsql guidelines. You need at least a > BEGIN at the beginning of the function, and an END at the end. > > But even with this, you cannot use VACUUM in a function. Don't remember > the reason why right now, but all you'll get is this error: > > ERROR: VACUUM cannot be executed from a function or multi-command > string > Because its not a transaction safe operation. Beside's , what's with the char(100) ? Function like that,you should use text type.