log_enable — controls transaction logging and in-statement
in bits integer ,
in quiet integer
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