From: Kirill Shcherbatov <kshcherbatov@tarantool.org>
To: tarantool-patches@freelists.org
Cc: georgy@tarantool.org, Kirill Shcherbatov <kshcherbatov@tarantool.org>
Subject: [tarantool-patches] [PATCH v1 0/2] box: functional and multikey indexes
Date: Sat, 17 Nov 2018 16:16:53 +0300 [thread overview]
Message-ID: <cover.1542460247.git.kshcherbatov@tarantool.org> (raw)
http://github.com/tarantool/tarantool/tree/kshch/gh-1260-functional-index
https://github.com/tarantool/tarantool/issues/1260
Tarantool functional and multikey indexes allows you to create
an index based on user-specified function.
Feature use hidden space _i_{index_name}_{space_name} containing
tuples of structure [{extractor_format}{pk_format}] and redefines
on_replace trigger for target space to fill this space. Index
object metamethods are monkeypatched to make indirect lookups in
ispace to retrieve required tuple primary key.
Same tuples indexed by different keys may be returned multiple
(matches key math count) times. To prevent such behavior for
select and count operations builtin filters were implemented.
The :pairs operator can't work such way, so it may return
same tuples.
Kirill Shcherbatov (2):
box: refactor index termination on space drop
box: functional and multikey indexes
src/box/CMakeLists.txt | 1 +
src/box/alter.cc | 61 ++++++-
src/box/index.cc | 9 +
src/box/index.h | 4 +
src/box/index_def.c | 64 +++++++-
src/box/index_def.h | 14 ++
src/box/lua/call.c | 43 +++++
src/box/lua/call.h | 18 ++
src/box/lua/func_idx.lua | 319 ++++++++++++++++++++++++++++++++++++
src/box/lua/schema.lua | 52 ++++--
src/box/lua/space.cc | 21 +++
src/box/memtx_engine.c | 6 +
src/box/vinyl.c | 6 +
src/lua/init.c | 2 +
test/engine/functional_idx.result | 120 ++++++++++++++
test/engine/functional_idx.test.lua | 35 ++++
16 files changed, 753 insertions(+), 22 deletions(-)
create mode 100644 src/box/lua/func_idx.lua
create mode 100644 test/engine/functional_idx.result
create mode 100644 test/engine/functional_idx.test.lua
--
2.7.4
next reply other threads:[~2018-11-17 13:17 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-17 13:16 Kirill Shcherbatov [this message]
2018-11-17 13:16 ` [tarantool-patches] [PATCH v1 1/2] box: refactor index termination on space drop Kirill Shcherbatov
2018-11-19 12:22 ` [tarantool-patches] Re: [PATCH] functional and multikey indexes RFC Kirill Shcherbatov
2018-11-20 12:18 ` Kirill Shcherbatov
[not found] ` <45d55e70c60c5c4b5806c8e7ce3330957a8dc0ce.1542460247.git.kshcherbatov@tarantool.org>
2018-11-20 12:18 ` [tarantool-patches] Re: [PATCH v1 2/2] box: functional and multikey indexes Kirill Shcherbatov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1542460247.git.kshcherbatov@tarantool.org \
--to=kshcherbatov@tarantool.org \
--cc=georgy@tarantool.org \
--cc=tarantool-patches@freelists.org \
--subject='Re: [tarantool-patches] [PATCH v1 0/2] box: functional and multikey indexes' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox