From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladimir Davydov Subject: [PATCH 2/4] alter: pass lsn of index drop record to engine Date: Wed, 23 May 2018 19:10:05 +0300 Message-Id: <22e380ef5508c29eff472f641ebba08e6bb80b9d.1527090319.git.vdavydov.dev@gmail.com> In-Reply-To: References: In-Reply-To: References: To: kostja@tarantool.org Cc: tarantool-patches@freelists.org List-ID: We pass lsn of index alter/create records, let's pass lsn of drop record for consistency. This is also needed by vinyl to store it in vylog (see the next patch). --- src/box/alter.cc | 8 ++++---- src/box/index.cc | 2 +- src/box/index.h | 11 +++++++---- src/box/vinyl.c | 3 ++- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/box/alter.cc b/src/box/alter.cc index f0315ff7..6f6fcb09 100644 --- a/src/box/alter.cc +++ b/src/box/alter.cc @@ -1037,12 +1037,12 @@ DropIndex::prepare(struct alter_space *alter) } void -DropIndex::commit(struct alter_space *alter, int64_t /* signature */) +DropIndex::commit(struct alter_space *alter, int64_t signature) { struct index *index = space_index(alter->old_space, old_index_def->iid); assert(index != NULL); - index_commit_drop(index); + index_commit_drop(index, signature); } /** @@ -1298,7 +1298,7 @@ RebuildIndex::commit(struct alter_space *alter, int64_t signature) struct index *old_index = space_index(alter->old_space, old_index_def->iid); assert(old_index != NULL); - index_commit_drop(old_index); + index_commit_drop(old_index, signature); assert(new_index != NULL); index_commit_create(new_index, signature); new_index = NULL; @@ -1355,7 +1355,7 @@ TruncateIndex::commit(struct alter_space *alter, int64_t signature) struct index *old_index = space_index(alter->old_space, iid); struct index *new_index = space_index(alter->new_space, iid); - index_commit_drop(old_index); + index_commit_drop(old_index, signature); index_commit_create(new_index, signature); } diff --git a/src/box/index.cc b/src/box/index.cc index 978935b3..f2274d23 100644 --- a/src/box/index.cc +++ b/src/box/index.cc @@ -562,7 +562,7 @@ generic_index_commit_modify(struct index *, int64_t) } void -generic_index_commit_drop(struct index *) +generic_index_commit_drop(struct index *, int64_t) { } diff --git a/src/box/index.h b/src/box/index.h index c7384b61..3bc41239 100644 --- a/src/box/index.h +++ b/src/box/index.h @@ -377,8 +377,11 @@ struct index_vtab { /** * Called after WAL write to commit index drop. * Must not fail. + * + * @signature is the LSN that was assigned to the row + * that dropped the index. */ - void (*commit_drop)(struct index *); + void (*commit_drop)(struct index *index, int64_t signature); /** * Called after index definition update that did not * require index rebuild. @@ -522,9 +525,9 @@ index_commit_modify(struct index *index, int64_t signature) } static inline void -index_commit_drop(struct index *index) +index_commit_drop(struct index *index, int64_t signature) { - index->vtab->commit_drop(index); + index->vtab->commit_drop(index, signature); } static inline void @@ -661,7 +664,7 @@ index_end_build(struct index *index) void generic_index_commit_create(struct index *, int64_t); void generic_index_abort_create(struct index *); void generic_index_commit_modify(struct index *, int64_t); -void generic_index_commit_drop(struct index *); +void generic_index_commit_drop(struct index *, int64_t); void generic_index_update_def(struct index *); bool generic_index_depends_on_pk(struct index *); ssize_t generic_index_size(struct index *); diff --git a/src/box/vinyl.c b/src/box/vinyl.c index 2e2c145a..a423e95b 100644 --- a/src/box/vinyl.c +++ b/src/box/vinyl.c @@ -929,8 +929,9 @@ vy_log_lsm_prune(struct vy_lsm *lsm, int64_t gc_lsn) } static void -vinyl_index_commit_drop(struct index *index) +vinyl_index_commit_drop(struct index *index, int64_t lsn) { + (void)lsn; struct vy_env *env = vy_env(index->engine); struct vy_lsm *lsm = vy_lsm(index); -- 2.11.0