[PATCH 00/12] vinyl: allow to extend key def of non-empty index

Vladimir Davydov vdavydov.dev at gmail.com
Sun Apr 1 12:05:27 MSK 2018


The goal of this patch set is to allow altering non-empty vinyl
indexes in case the new key definition is fully compatible with the
old one (i.e. has the same key parts, but more generic field types).
This is an important step toward closing #1653 [1].

The code is available at GitHub, see [2]. Note this patch set is based
on top of the patch that removes vinyl upsert_format, see [3, 4].

[1] https://github.com/tarantool/tarantool/issues/1653
[2] https://github.com/tarantool/tarantool/commits/vy-allow-to-extend-key-def
[3] https://github.com/tarantool/tarantool/commits/vy-zap-upsert-format
[4] https://www.freelists.org/post/tarantool-patches/PATCH-02-vinyl-zap-upsert-format

Vladimir Davydov (12):
  index: add commit_modify virtual method
  alter: require rebuild of all secondary vinyl indexes if pk changes
  alter: do not rebuild secondary indexes on compatible pk changes
  space: make space_swap_index method virtual
  vinyl: do not reallocate tuple formats on alter
  vinyl: zap vy_lsm_validate_formats
  vinyl: zap vy_mem_update_formats
  vinyl: remove pointless is_nullable initialization for disk_format
  vinyl: use source tuple format when copying field map
  vinyl: rename vy_log_record::commit_lsn to create_lsn
  vinyl: do not write VY_LOG_DUMP_LSM record to snapshot
  vinyl: allow to modify key definition if it does not require rebuild

 src/box/alter.cc                  |  28 +++++---
 src/box/index.cc                  |  10 +++
 src/box/index.h                   |  28 ++++++++
 src/box/key_def.cc                |   9 +++
 src/box/key_def.h                 |   7 ++
 src/box/memtx_bitset.c            |   2 +
 src/box/memtx_hash.c              |   2 +
 src/box/memtx_rtree.c             |   2 +
 src/box/memtx_space.c             |   1 +
 src/box/memtx_tree.c              |  10 +++
 src/box/space.c                   |   9 ++-
 src/box/space.h                   |  33 ++++++---
 src/box/sysview_engine.c          |   1 +
 src/box/sysview_index.c           |   2 +
 src/box/tuple_format.c            |  18 -----
 src/box/tuple_format.h            |   8 ---
 src/box/vinyl.c                   | 144 ++++++++++++++++++++++----------------
 src/box/vy_log.c                  | 124 ++++++++++++++++++++++++--------
 src/box/vy_log.h                  |  36 ++++++++--
 src/box/vy_lsm.c                  |  49 +++----------
 src/box/vy_lsm.h                  |  17 ++---
 src/box/vy_mem.c                  |  15 +---
 src/box/vy_point_lookup.c         |   3 +-
 src/box/vy_stmt.c                 |  18 ++---
 src/box/vy_stmt.h                 |   6 +-
 src/box/vy_upsert.c               |   4 +-
 test/engine/ddl.result            | 113 +++++++++++++++++++++++++++++-
 test/engine/ddl.test.lua          |  35 ++++++++-
 test/engine/replica_join.result   |  26 ++++++-
 test/engine/replica_join.test.lua |   2 +
 test/engine/truncate.result       |   2 +-
 test/engine/truncate.test.lua     |   2 +-
 test/vinyl/ddl.result             |  78 ++++++---------------
 test/vinyl/ddl.test.lua           |  30 ++------
 test/vinyl/gh.result              |   2 +-
 test/vinyl/layout.result          |  75 +++++++++-----------
 test/vinyl/layout.test.lua        |   4 +-
 37 files changed, 595 insertions(+), 360 deletions(-)

-- 
2.11.0




More information about the Tarantool-patches mailing list