[tarantool-patches] Re: [PATCH 1/1] box: expose on_commit/rollback triggers for Lua
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Fri Aug 17 17:45:21 MSK 2018
For an updated commit message see my response
sent to your next email.
On 17/08/2018 11:40, Vladimir Davydov wrote:
> I haven't looked at the code yet, just skimmed over the commit message,
> but already have a couple of questions that I think should be clarified
> in the documentation request.
>
> On Thu, Aug 16, 2018 at 08:57:10PM +0300, Vladislav Shpilevoy wrote:
>> On commit/rollback triggers are already implemented
>> within Tarantool internals. The patch just exposes
>> them for Lua. Below the API is described, which
>> deserves an attention though.
>>
>> Closes #857
>>
>> @TarantoolBot document
>> Title: Document box.on_commit/on_rollback triggers
>> On commit/rollback triggers can be set similar to
>> space:on_replace triggers:
>
> From before_replace/on_replace trigger you can issue DDL statements.
> What happens if you try to do the same from on_commit/on_rollback
> trigger?
>
>>
>> box.on_commit/rollback(new_trigger, old_trigger)
>>
>> A trigger can be set only inside an active
>> transaction. When a trigger is called, it takes 1
>> parameter: an iterator over the transaction
>> statements.
>>
>> box.on_commit(function(iterator)
>> for i, old_tuple, new_tuple, space_id in iterator() do
>> -- Do something with tuples and space ...
>> end
>> end)
>
> OK, on_commit trigger takes committed tuples. What arguments does
> on_rollback trigger take?
>
>>
>> On each step the iterator returns 4 values: statement
>> number (grows from 1 to statement count), old tuple or
>> nil, new tuple or nil and space id. Old tuple is not
>> nil when the statement updated or deleted the existing
>> tuple. New tuple is not nil when the statement updated
>> or inserted the tuple.
>>
>> The iterator can not be used outside of the trigger.
>> Otherwise it throws an error.
>>
>> On_commit/rollback triggers shall not fail, otherwise
>> Tarantool exits with panic.
More information about the Tarantool-patches
mailing list