[Tarantool-patches] [PATCH] box: introduce "current" for sequence

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Fri Mar 13 00:09:55 MSK 2020



On 12/03/2020 16:42, Oleg Babin wrote:
> Thanks for comments!
> 
> On 11/03/2020 01:49, Vladislav Shpilevoy wrote:
>> Here you said, that Tarantool has no sessions, but it is not so. We
>> have sessions, and even some session local things such as settings,
>> storage.
>>
> 
> It was a cite from https://github.com/tarantool/tarantool/commit/3ff1f1e36e14381c0ebb5862943d4da281254767:
> | In contrast to PostgreSQL, this method doesn't make sense in  | Tarantool, because we don't have sessions.
> 
> It was said before _session_storage was implemented but box.session has been already existed. I will try to drop this misleading statement and add: `In contrast "current" returns the last globally retrieved value of the sequence`. Ok?

I don't know why was it said back then that we don't have
sessions. Maybe Vova meant we don't have exactly the same sessions
as PostgreSQL, with full isolation and so on.

>> FFI has nothing to do with contracts. It is about performance.
>> We don't have a rule, that a whole subsystem should be either
>> completely in FFI, or completely in Lua C. Lots of things are
>> implemented in FFI + Lua C + Lua. For example, fiber module -
>> it uses all the 3 ways simultaneously. box_select() is FFI for
>> memtx, is Lua C for vinyl, and so on.
>>
>> On the contrary, we have a rule to make things via FFI when it
>> is possible (there was a discussion about that recently, don't
>> know whether it was formalized anywhere).
>>
>> Also I don't see any reason to make it FFI in a separate patch.
>> Why not in this one? What is a purpose of introducing a function
>> and re-implementing it right in a next patch and even create an
>> issue for that?
>>
>> The most reasonable split I see here is to introduce the C
>> function in one patch, and FFI in Lua in a second patch. In
>> scope of one patchset.
> 
> As we can use FFI for all functions that doesn't yield, we can rewrite e.g. "next" with FFI as well. It will be a bit more uniformly. And the idea is to do it in separate patch. But ok, I'll change "current" from Lua C API to FFI and send new patch.

It is not possible. Because sequence_next() can be used only via
box_sequence_next() by the public API. And box_sequence_next() can
yield. Box_sequence_set/reset/next() - all of them can yield.

> -- 
> Oleg Babin


More information about the Tarantool-patches mailing list