Tarantool development patches archive
 help / color / mirror / Atom feed
* [PATCH 00/12] vinyl: do not fill secondary tuples with nulls
@ 2019-02-21 10:26 Vladimir Davydov
  2019-02-21 10:26 ` [PATCH 01/12] vinyl: use vy_lsm_env::empty_key where appropriate Vladimir Davydov
                   ` (12 more replies)
  0 siblings, 13 replies; 30+ messages in thread
From: Vladimir Davydov @ 2019-02-21 10:26 UTC (permalink / raw)
  To: kostja; +Cc: tarantool-patches

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

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2019-03-01 12:57 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-21 10:26 [PATCH 00/12] vinyl: do not fill secondary tuples with nulls Vladimir Davydov
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox