[PATCH v7 0/5] box: Indexes by JSON path
Kirill Shcherbatov
kshcherbatov at tarantool.org
Wed Jan 9 11:29:35 MSK 2019
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 7:
- rebased to actual 2.1 containing partialy-reworked part of v6
- introduced a JSON path length limit to guarantee it fits in
static buffer
- reworked tuple_format1_can_store_format2_tuples to use trivial
routines tuple_field_path and json_tree_lookup_path_entry to
lookup record(it is not perf-critical place)
- reworked similar code in tuple_format_create that does stmt
size estimation and vy_stmt_new_surrogate_from_key tuple built
as a new tuple_format_stmt_encode routine.
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 (5):
box: introduce JSON Indexes
box: introduce has_json_paths flag in templates
box: tune tuple_field_raw_by_path for indexed data
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 | 172 ++++++++++--
src/box/key_def.h | 44 +++-
src/box/lua/index.c | 64 +++++
src/box/lua/schema.lua | 22 +-
src/box/lua/space.cc | 5 +
src/box/memtx_engine.c | 4 +
src/box/schema_def.h | 1 +
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 | 19 --
src/box/tuple_compare.cc | 119 ++++++---
src/box/tuple_extract_key.cc | 126 ++++++---
src/box/tuple_format.c | 494 +++++++++++++++++++++++++++++------
src/box/tuple_format.h | 100 +++++--
src/box/tuple_hash.cc | 47 +++-
src/box/vinyl.c | 4 +
src/box/vy_log.c | 11 +-
src/box/vy_point_lookup.c | 2 -
src/box/vy_stmt.c | 49 ++--
src/lib/json/json.c | 7 +-
src/lib/json/json.h | 16 ++
test/engine/json.result | 481 ++++++++++++++++++++++++++++++++++
test/engine/json.test.lua | 139 ++++++++++
27 files changed, 1665 insertions(+), 279 deletions(-)
create mode 100644 test/engine/json.result
create mode 100644 test/engine/json.test.lua
--
2.19.2
More information about the Tarantool-patches
mailing list