From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Kirill Shcherbatov Subject: [PATCH v9 0/6] box: Indexes by JSON path Date: Sun, 3 Feb 2019 13:20:20 +0300 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: tarantool-patches@freelists.org, vdavydov.dev@gmail.com Cc: Kirill Shcherbatov List-ID: Sometimes field data could have complex document structure. When this structure is consistent across whole document, you are able to create an index by JSON path. Changes in version 9: - new test cases for snapshooting, recovery, selects by full and partial; primary and secondary indexes - fixed corrupted vylog - there was invalid key_part_def duplication in vy_log.c - fixed vynyl's replace operation - support for nullable key_def in tuple_extract_key_slowpath_raw even it is never used with has_optional_parts = true in Tarantool (since everywhere it is used for pk that can't contain nullable parts) - better comments everywhere v8: https://www.freelists.org/post/tarantool-patches/PATCH-v8-55-box-specify-indexes-in-userfriendly-form,1 v7: https://www.freelists.org/post/tarantool-patches/PATCH-v7-55-box-specify-indexes-in-userfriendly-form,1 v6: https://www.freelists.org/post/tarantool-patches/PATCH-v6-88-box-specify-indexes-in-userfriendly-form,1 v5: https://www.freelists.org/post/tarantool-patches/PATCH-v5-99-box-specify-indexes-in-userfriendly-form,1 http://github.com/tarantool/tarantool/tree/kshch/gh-1012-json-indexes https://github.com/tarantool/tarantool/issues/1012 Kirill Shcherbatov (6): lib: update msgpuck library box: introduce tuple_field_raw_by_path routine box: introduce JSON Indexes box: introduce has_json_paths flag in templates box: introduce offset_slot cache in key_part box: specify indexes in user-friendly form src/box/alter.cc | 2 +- src/box/index_def.c | 10 +- src/box/key_def.c | 162 +++++++-- src/box/key_def.h | 48 ++- src/box/lua/schema.lua | 100 ++++- src/box/lua/space.cc | 5 + src/box/lua/tuple.c | 9 +- src/box/memtx_engine.c | 4 + src/box/sql.c | 1 + src/box/sql/build.c | 1 + src/box/sql/select.c | 3 +- src/box/sql/where.c | 1 + src/box/tuple.h | 60 +-- src/box/tuple_compare.cc | 115 ++++-- src/box/tuple_extract_key.cc | 135 ++++--- src/box/tuple_format.c | 441 ++++++++++++++++------ src/box/tuple_format.h | 200 ++++++---- src/box/tuple_hash.cc | 40 +- src/box/vinyl.c | 4 + src/box/vy_log.c | 61 +++- src/box/vy_point_lookup.c | 4 +- src/box/vy_stmt.c | 202 ++++++++--- src/lib/msgpuck | 2 +- test/engine/json.result | 685 +++++++++++++++++++++++++++++++++++ test/engine/json.test.lua | 194 ++++++++++ test/engine/tuple.result | 16 +- test/unit/msgpack.result | 4 +- 27 files changed, 2095 insertions(+), 414 deletions(-) create mode 100644 test/engine/json.result create mode 100644 test/engine/json.test.lua -- 2.20.1