box: disable sparse optimization in box.tuple.new()
The box.tuple.new() used to call luamp_encode_tuple with default LUA serializer config 'luaL_msgpack_default'. This routine may consider an array to be excessively sparse when + encode_sparse_ratio > 0 + max(table) > encode_sparse_safe + max(table) > count(table) * encode_sparse_ratio. Sparse optimization save memory via representing excessively sparse tuple as MP_MAP. But Tarantool tuple always must be MP_ARRAY so it is not relevant for box.tuple.new semantics. So it is disabled with encode_sparse_ratio = 0 in a new local serializer config. Closes #3882
Showing
- src/box/lua/tuple.c 11 additions, 1 deletionsrc/box/lua/tuple.c
- src/lua/utils.c 9 additions, 0 deletionssrc/lua/utils.c
- src/lua/utils.h 7 additions, 0 deletionssrc/lua/utils.h
- test/box/tuple.result 50 additions, 0 deletionstest/box/tuple.result
- test/box/tuple.test.lua 26 additions, 0 deletionstest/box/tuple.test.lua
Loading
Please register or sign in to comment