Tarantool development patches archive
 help / color / mirror / Atom feed
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

             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