[tarantool-patches] Re: [PATCH v2 3/3] schema: expose space_mt and index_mt on box.schema table
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Tue May 8 20:33:25 MSK 2018
Hello. Thanks for review!
On 08/05/2018 19:48, Konstantin Osipov wrote:
> * Vladislav Shpilevoy <v.shpilevoy at tarantool.org> [18/05/05 23:23]:
>
> This branch breaks app/luafun.test.lua
Sorry, just noticed that my auto test-runner script skips app/ directory.
Fixed on the branch. The problem was that luafun expects that space/index
metatable contains __ipairs/__pairs metamethods with not proxy via __index.
@@ -1449,7 +1449,12 @@ box.schema.space_mt = space_mt
-- up at first in self, and only then into the global mt.
--
local function wrap_schema_object_mt(name)
- local mt = { __index = box.schema[name] }
+ local global_mt = box.schema[name]
+ local mt = {
+ __index = global_mt,
+ __ipairs = global_mt.__ipairs,
+ __pairs = global_mt.__pairs
+ }
local mt_mt = {}
mt_mt.__newindex = function(t, k, v)
mt_mt.__newindex = nil
>
>> Users requested to be able to extend spaces individually. The
>> patch was reworked to allow this.
>>
>> On 03/04/2018 19:50, Vladislav Shpilevoy wrote:
>>> This commit allows userland to extend the space and index
>>> metatables with their own functions or even metamethods. Reducing
>>> barriers for this kind of experimentation is vital for user
>>> contribution toward the improvement of Tarantool's API.
>>>
>>> There are 4 metatables available for extending:
>>> box.schema.space_mt - metatable of all spaces;
>>> box.schema.index_mt - base metatable of all indexes - replicated
>>> into the vinyl and memtx. See below how.
>>> box.schema.vinyl_index_mt - metatable of all vinyl indexes;
>>> box.schema.memtx_index_mt - metatable of all memtx indexes.
>>>
>>> Closes #3204
>
More information about the Tarantool-patches
mailing list