Name
log_enable — controls transaction logging and in-statement autocommit
Synopsis
log_enable ( |
in bits integer , |
in quiet integer
) ; |
Description
The log_enable
function allows
turning off or on regular transaction logging or autocommit after
every changed row. The parameter bits
is a bitmask. Two bits that are
in use in current versions are 1 and 2. When bit 1 is not set (e.g.
parameter value 0) then the function call terminates logging of DML
statements inside the calling transaction. A value of 1 resumes
logging of DML statements. If bit 2 is set then automatic commits
take place after every change in every row in every DML statement.
Thus a parameter value of 2 disables logging and enables row-by-row
autocommit. A value of 3 enables row-by-row autocommit and enables
logging. While log on and off setting alone is reset at the end of
the transaction so that one does not end up with logging disabled
by accident, the row-by-row autocommit mode causes the setting to
be permanent inside the calling connection or web request. That is,
for a SQL client the setting stays in effect until changed or
disconnected and for a web request it stays in effect until the
request is completed.
The function do nothing if the bits
is NULL. The function also do
nothing when called inside atomic section.
The function always returns the bitmask that describes old configuration of the log.
Attempt to disable transaction log that is disabled already result in an error. If the second parameter is passed and it is not equal to zero then the error is suppressed (and it's still possible to turn on or off autocommit).
Using this function one can create situations where a transaction's outcome would be different from the outcome of doing a roll forward of the transaction log.
There are rare cases where it is more efficient to log an action in the form of a procedure call instead of logging the effects of the procedure on a row by row basis. This is similar in concept to replicating procedure calls but applies to roll forward instead.