[PATCH 0/5] JSON update preparation
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Sun Jul 14 01:11:03 MSK 2019
The patchset is mainly about rope and its usage. Rope is a data structure
allowing to modify an array with memory overhead not depending on the array
size. Only on the number of modifications. It is used when there is a long
array of something, and a one wants to insert new elements, delete existing
ones, change their values, but do not rebuild the whole array each time.
Rope is going to be one of the core data structures of the incoming JSON path
updates, and this patchset makes it faster and lighter.
Branch: http://github.com/tarantool/tarantool/tree/gerold103/gh-1261-update-json-prepare
Issue: https://github.com/tarantool/tarantool/issues/1261
Vladislav Shpilevoy (5):
tuple: remove alloc and alloc_ctx args from update()
rope: make rope library macro template
tuple: relax struct tuple_update dependency on rope
int96: add a missing header
tuple: implement update by field name
debian/copyright | 2 +-
src/box/errcode.h | 4 +-
src/box/lua/tuple.c | 10 +-
src/box/memtx_space.c | 27 +-
src/box/space.c | 26 +-
src/box/sql/insert.c | 3 +-
src/box/sql/resolve.c | 4 +-
src/box/sql/update.c | 2 +-
src/box/tuple.c | 18 +-
src/box/tuple_update.c | 292 +++++++++--------
src/box/tuple_update.h | 25 +-
src/box/vinyl.c | 19 +-
src/box/vy_upsert.c | 31 +-
src/lib/bit/int96.h | 1 +
src/lib/salad/rope.c | 479 +++++-----------------------
src/lib/salad/rope.h | 617 +++++++++++++++++++++++++++++++-----
test/box/misc.result | 3 +-
test/box/update.result | 2 +-
test/engine/update.result | 67 ++++
test/engine/update.test.lua | 28 ++
test/engine/upsert.result | 2 +-
test/unit/column_mask.c | 33 +-
test/unit/rope.c | 1 -
test/unit/rope_avl.c | 1 -
test/unit/rope_basic.c | 1 -
test/unit/rope_common.h | 41 ++-
test/unit/rope_stress.c | 5 +-
27 files changed, 993 insertions(+), 751 deletions(-)
--
2.20.1 (Apple Git-117)
More information about the Tarantool-patches
mailing list