From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 26 Jul 2019 13:10:33 +0300 From: Vladimir Davydov Subject: Re: [PATCH v5 3/3] box: introduce func_index Message-ID: <20190726101032.GB4080@esperanza> References: <25789ea46e8fcec527bd7864209bb6ea2113dca5.1564079799.git.kshcherbatov@tarantool.org> <20190726094958.GA4080@esperanza> <20190726095743.GG9916@atlas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190726095743.GG9916@atlas> To: Konstantin Osipov Cc: Kirill Shcherbatov , tarantool-patches@freelists.org, v.shpilevoy@tarantool.org List-ID: On Fri, Jul 26, 2019 at 12:57:43PM +0300, Konstantin Osipov wrote: > * Vladimir Davydov [19/07/26 12:54]: > > > > There's one thing about _func_index space that keeps bothering me: since > > insertion of a tuple into this space is a yielding operation and this > > operation is executed after insertion of a tuple into _index, we won't > > be able to wrap space.create_index() into box.begin/commit, because only > > the first DDL statement in a transaction is allowed to be yielding. > > I think we agreed to solve this to build func index at recovery > in _func_index trigger and at create in _func trigger. I don't understand how it's connected with recovery. Could you please elaborate? Just to be clear, I mean the following: space.create_index(): _index:insert{...} _func_index:insert{...} The latter may yield so we can't use box.begin/commit in space.create_index() Lua function.