Обсуждение: 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. 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.
От
Guillaume Lelarge
Дата:
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.
От
Greg Jaskiewicz
Дата:
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.