Search Postgresql Archives

Re: Re: [webmaster] How to commit/vacuum a batch of delete statements in a postgresql function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/26/2015 08:16 PM, Nava Jyothi wrote:
/Hi PostGresSQL Team

Could you advise us on how to commit records in a batch when one is
doing batch wise deletion/. I came across
http://www.postgresql.org/message-id/60644bymua.fsf@xxxxxxxxxxxxxxxxxxxxxxx,

That post references untested pseudo code.

but use of vacuum is giving an error as follows from function.

/********** Error **********

ERROR: VACUUM cannot be executed from a function or multi-command string
SQL state: 25001

Well the underling reason is this:

http://www.postgresql.org/docs/9.4/interactive/sql-vacuum.html

"VACUUM cannot be executed inside a transaction block."


/My stored procedure is of the format:/
/

/Loop
exit when <some condition> DELETE from incoming_table where xyz='123';
VACUUM incoming_table; -- or commit; End Loop;/

Not sure where the above is coming from, but assuming it is in a Postgres procedural language function, the function will being running in a transaction block. This is why you are seeing the error. The solution would be too have a script that calls the batch delete function, then calls VACUUM. So something like(again untested pseudo code);

SELECT batch_delete_fnc();
VACUUM affected_table;

Note NO transaction block around above.



I thank you for the help.

-Nava


--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx


--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux