[PATCH 00/12] vinyl: do not fill secondary tuples with nulls
Vladimir Davydov
vdavydov.dev at gmail.com
Thu Feb 21 13:26:00 MSK 2019
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
More information about the Tarantool-patches
mailing list