From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladislav Shpilevoy Subject: [PATCH 0/5] JSON update preparation Date: Sun, 14 Jul 2019 00:11:03 +0200 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: tarantool-patches@freelists.org Cc: vdavydov.dev@gmail.com List-ID: 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)