From: Vladimir Davydov <vdavydov.dev@gmail.com> To: kostja@tarantool.org Cc: tarantool-patches@freelists.org Subject: [PATCH 00/12] vinyl: do not fill secondary tuples with nulls Date: Thu, 21 Feb 2019 13:26:00 +0300 [thread overview] Message-ID: <cover.1550744027.git.vdavydov.dev@gmail.com> (raw) The goal of this patch set is to teach vinyl operate on key statements like on regular tuples so that we can avoid filling tuples read from secondary index runs with nulls (aka tuple surrogate). This is required to implement multikey indexes in vinyl. The first seven patches are preparatory - they do some cleanup that stand on the way and can probably be applied even if the rest of the patch set is rejected. The real work is done by the last 5 patches, which should be reviewed with scrutiny. I'm far not sure this is the right way to go, but I've failed to find a better solution so far. https://github.com/tarantool/tarantool/commits/dv/vy-dont-store-nulls-in-sk Vladimir Davydov (12): vinyl: use vy_lsm_env::empty_key where appropriate vinyl: make vy_tuple_delete static key_def: cleanup virtual function initialization key_def: move cmp and hash functions declarations to key_def.h vinyl: move vy_tuple_key_contains_null to generic code vinyl: move vy_key_dup to generic code vinyl: sanitize full/empty key stmt detection vinyl: remove optimized comparators vinyl: introduce statement environment vinyl: rename key stmt construction routine vinyl: don't use IPROTO_SELECT type for key statements vinyl: do not fill secondary tuples with nulls when decoded src/box/key_def.c | 52 ++++++-- src/box/key_def.h | 97 ++++++++++++++ src/box/memtx_hash.c | 1 - src/box/sql/analyze.c | 1 - src/box/tuple.c | 15 +++ src/box/tuple.h | 9 ++ src/box/tuple_bloom.c | 65 +++++++--- src/box/tuple_bloom.h | 15 +++ src/box/tuple_compare.cc | 35 ++++- src/box/tuple_compare.h | 34 +---- src/box/tuple_extract_key.cc | 18 ++- src/box/tuple_extract_key.h | 2 +- src/box/tuple_hash.cc | 1 + src/box/tuple_hash.h | 58 +-------- src/box/vinyl.c | 118 ++++++++--------- src/box/vy_cache.c | 22 ++-- src/box/vy_cache.h | 2 +- src/box/vy_lsm.c | 80 ++++++------ src/box/vy_lsm.h | 8 +- src/box/vy_mem.c | 17 ++- src/box/vy_mem.h | 2 +- src/box/vy_point_lookup.c | 5 +- src/box/vy_range.c | 18 ++- src/box/vy_read_iterator.c | 28 ++-- src/box/vy_read_set.c | 18 +-- src/box/vy_run.c | 135 +++++++++++--------- src/box/vy_scheduler.c | 6 +- src/box/vy_stmt.c | 121 +++++++++--------- src/box/vy_stmt.h | 277 ++++++++++++++++------------------------ src/box/vy_tx.c | 20 ++- src/box/vy_tx.h | 4 +- src/box/vy_upsert.c | 2 +- src/box/vy_write_iterator.c | 2 +- test/unit/vy_iterators_helper.c | 23 +--- test/unit/vy_iterators_helper.h | 3 +- test/unit/vy_mem.c | 8 +- test/unit/vy_point_lookup.c | 9 +- 37 files changed, 730 insertions(+), 601 deletions(-) -- 2.11.0
next reply other threads:[~2019-02-21 10:26 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-21 10:26 Vladimir Davydov [this message] 2019-02-21 10:26 ` [PATCH 01/12] vinyl: use vy_lsm_env::empty_key where appropriate Vladimir Davydov 2019-02-21 10:59 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 10:26 ` [PATCH 02/12] vinyl: make vy_tuple_delete static Vladimir Davydov 2019-02-21 11:00 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 10:26 ` [PATCH 03/12] key_def: cleanup virtual function initialization Vladimir Davydov 2019-02-21 11:01 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 12:05 ` Vladimir Davydov 2019-02-21 10:26 ` [PATCH 04/12] key_def: move cmp and hash functions declarations to key_def.h Vladimir Davydov 2019-02-21 11:02 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 10:26 ` [PATCH 05/12] vinyl: move vy_tuple_key_contains_null to generic code Vladimir Davydov 2019-02-21 11:02 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 10:26 ` [PATCH 06/12] vinyl: move vy_key_dup " Vladimir Davydov 2019-02-21 11:04 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 11:52 ` Vladimir Davydov 2019-02-21 10:26 ` [PATCH 07/12] vinyl: sanitize full/empty key stmt detection Vladimir Davydov 2019-02-21 11:10 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 12:11 ` Vladimir Davydov 2019-03-01 12:57 ` Vladimir Davydov 2019-02-21 10:26 ` [PATCH 08/12] vinyl: remove optimized comparators Vladimir Davydov 2019-02-21 11:11 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 10:26 ` [PATCH 09/12] vinyl: introduce statement environment Vladimir Davydov 2019-02-21 11:14 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 10:26 ` [PATCH 10/12] vinyl: rename key stmt construction routine Vladimir Davydov 2019-02-21 11:15 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 12:14 ` Vladimir Davydov 2019-02-21 10:26 ` [PATCH 11/12] vinyl: don't use IPROTO_SELECT type for key statements Vladimir Davydov 2019-02-21 11:16 ` [tarantool-patches] " Konstantin Osipov 2019-02-21 10:26 ` [PATCH 12/12] vinyl: do not fill secondary tuples with nulls when decoded Vladimir Davydov 2019-02-21 15:39 ` [PATCH 00/12] vinyl: do not fill secondary tuples with nulls Vladimir Davydov
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.1550744027.git.vdavydov.dev@gmail.com \ --to=vdavydov.dev@gmail.com \ --cc=kostja@tarantool.org \ --cc=tarantool-patches@freelists.org \ --subject='Re: [PATCH 00/12] vinyl: do not fill secondary tuples with nulls' \ /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