[PATCH v2 08/14] vinyl: do not pass format to vy_apply_upsert

Vladimir Davydov vdavydov.dev at gmail.com
Wed Mar 13 11:52:54 MSK 2019


Use the format of the given statement instead. Passing format is
a legacy from the time when we have a separate format for UPSERTs.
Nowadays it only obfuscates the code.
---
 src/box/vinyl.c             | 2 +-
 src/box/vy_history.c        | 5 ++---
 src/box/vy_history.h        | 3 +--
 src/box/vy_lsm.c            | 3 +--
 src/box/vy_point_lookup.c   | 4 ++--
 src/box/vy_read_iterator.c  | 2 +-
 src/box/vy_tx.c             | 5 ++---
 src/box/vy_upsert.c         | 5 +++--
 src/box/vy_upsert.h         | 4 +---
 src/box/vy_write_iterator.c | 4 ++--
 10 files changed, 16 insertions(+), 21 deletions(-)

diff --git a/src/box/vinyl.c b/src/box/vinyl.c
index 0146f62c..0e908cc5 100644
--- a/src/box/vinyl.c
+++ b/src/box/vinyl.c
@@ -4069,7 +4069,7 @@ vy_build_recover_stmt(struct vy_lsm *lsm, struct vy_lsm *pk,
 			return -1;
 	} else if (type == IPROTO_UPSERT) {
 		struct tuple *new_tuple = vy_apply_upsert(mem_stmt, old_tuple,
-					pk->cmp_def, pk->mem_format, true);
+							  pk->cmp_def, true);
 		if (new_tuple == NULL)
 			return -1;
 		uint32_t data_len;
diff --git a/src/box/vy_history.c b/src/box/vy_history.c
index 0f3b7119..b45c6d51 100644
--- a/src/box/vy_history.c
+++ b/src/box/vy_history.c
@@ -74,8 +74,7 @@ vy_history_cleanup(struct vy_history *history)
 
 int
 vy_history_apply(struct vy_history *history, struct key_def *cmp_def,
-		 struct tuple_format *format, bool keep_delete,
-		 int *upserts_applied, struct tuple **ret)
+		 bool keep_delete, int *upserts_applied, struct tuple **ret)
 {
 	*ret = NULL;
 	*upserts_applied = 0;
@@ -101,7 +100,7 @@ vy_history_apply(struct vy_history *history, struct key_def *cmp_def,
 	}
 	while (node != NULL) {
 		struct tuple *stmt = vy_apply_upsert(node->stmt, curr_stmt,
-						     cmp_def, format, true);
+						     cmp_def, true);
 		++*upserts_applied;
 		if (curr_stmt != NULL)
 			tuple_unref(curr_stmt);
diff --git a/src/box/vy_history.h b/src/box/vy_history.h
index e3c5a19e..458ea749 100644
--- a/src/box/vy_history.h
+++ b/src/box/vy_history.h
@@ -155,8 +155,7 @@ vy_history_cleanup(struct vy_history *history);
  */
 int
 vy_history_apply(struct vy_history *history, struct key_def *cmp_def,
-		 struct tuple_format *format, bool keep_delete,
-		 int *upserts_applied, struct tuple **ret);
+		 bool keep_delete, int *upserts_applied, struct tuple **ret);
 
 #if defined(__cplusplus)
 } /* extern "C" */
diff --git a/src/box/vy_lsm.c b/src/box/vy_lsm.c
index 171664d4..2dc8f639 100644
--- a/src/box/vy_lsm.c
+++ b/src/box/vy_lsm.c
@@ -977,8 +977,7 @@ vy_lsm_commit_upsert(struct vy_lsm *lsm, struct vy_mem *mem,
 		older = vy_mem_older_lsn(mem, stmt);
 		assert(older == NULL || vy_stmt_type(older) != IPROTO_UPSERT);
 		struct tuple *upserted =
-			vy_apply_upsert(stmt, older, lsm->cmp_def,
-					lsm->mem_format, false);
+			vy_apply_upsert(stmt, older, lsm->cmp_def, false);
 		lsm->stat.upsert.applied++;
 
 		if (upserted == NULL) {
diff --git a/src/box/vy_point_lookup.c b/src/box/vy_point_lookup.c
index 18d5622b..51226ce8 100644
--- a/src/box/vy_point_lookup.c
+++ b/src/box/vy_point_lookup.c
@@ -272,7 +272,7 @@ done:
 
 	if (rc == 0) {
 		int upserts_applied;
-		rc = vy_history_apply(&history, lsm->cmp_def, lsm->mem_format,
+		rc = vy_history_apply(&history, lsm->cmp_def,
 				      false, &upserts_applied, ret);
 		lsm->stat.upsert.applied += upserts_applied;
 	}
@@ -319,7 +319,7 @@ vy_point_lookup_mem(struct vy_lsm *lsm, const struct vy_read_view **rv,
 done:
 	if (rc == 0) {
 		int upserts_applied;
-		rc = vy_history_apply(&history, lsm->cmp_def, lsm->mem_format,
+		rc = vy_history_apply(&history, lsm->cmp_def,
 				      true, &upserts_applied, ret);
 		lsm->stat.upsert.applied += upserts_applied;
 	}
diff --git a/src/box/vy_read_iterator.c b/src/box/vy_read_iterator.c
index 94c5f4b9..cc884bec 100644
--- a/src/box/vy_read_iterator.c
+++ b/src/box/vy_read_iterator.c
@@ -805,7 +805,7 @@ vy_read_iterator_apply_history(struct vy_read_iterator *itr,
 	}
 
 	int upserts_applied = 0;
-	int rc = vy_history_apply(&history, lsm->cmp_def, lsm->mem_format,
+	int rc = vy_history_apply(&history, lsm->cmp_def,
 				  true, &upserts_applied, ret);
 
 	lsm->stat.upsert.applied += upserts_applied;
diff --git a/src/box/vy_tx.c b/src/box/vy_tx.c
index 3768b3bd..c4445505 100644
--- a/src/box/vy_tx.c
+++ b/src/box/vy_tx.c
@@ -481,7 +481,7 @@ vy_tx_write(struct vy_lsm *lsm, struct vy_mem *mem,
 		vy_cache_on_write(&lsm->cache, stmt, &deleted);
 		if (deleted != NULL) {
 			struct tuple *applied = vy_apply_upsert(stmt, deleted,
-					mem->cmp_def, mem->format, false);
+							mem->cmp_def, false);
 			tuple_unref(deleted);
 			if (applied != NULL) {
 				assert(vy_stmt_type(applied) == IPROTO_REPLACE);
@@ -998,8 +998,7 @@ vy_tx_set_with_colmask(struct vy_tx *tx, struct vy_lsm *lsm,
 		       old_type == IPROTO_DELETE);
 		(void) old_type;
 
-		applied = vy_apply_upsert(stmt, old->stmt, lsm->cmp_def,
-					  lsm->mem_format, true);
+		applied = vy_apply_upsert(stmt, old->stmt, lsm->cmp_def, true);
 		lsm->stat.upsert.applied++;
 		if (applied == NULL)
 			return -1;
diff --git a/src/box/vy_upsert.c b/src/box/vy_upsert.c
index 3c5a4abb..8cf0cc19 100644
--- a/src/box/vy_upsert.c
+++ b/src/box/vy_upsert.c
@@ -88,8 +88,7 @@ vy_upsert_try_to_squash(struct tuple_format *format, struct region *region,
 
 struct tuple *
 vy_apply_upsert(const struct tuple *new_stmt, const struct tuple *old_stmt,
-		struct key_def *cmp_def, struct tuple_format *format,
-		bool suppress_error)
+		struct key_def *cmp_def, bool suppress_error)
 {
 	/*
 	 * old_stmt - previous (old) version of stmt
@@ -107,6 +106,8 @@ vy_apply_upsert(const struct tuple *new_stmt, const struct tuple *old_stmt,
 		return vy_stmt_replace_from_upsert(new_stmt);
 	}
 
+	struct tuple_format *format = tuple_format(new_stmt);
+
 	/*
 	 * Unpack UPSERT operation from the new stmt
 	 */
diff --git a/src/box/vy_upsert.h b/src/box/vy_upsert.h
index 5649961e..df3413d8 100644
--- a/src/box/vy_upsert.h
+++ b/src/box/vy_upsert.h
@@ -57,7 +57,6 @@ struct tuple_format;
  * @param new_stmt       An UPSERT statement.
  * @param old_stmt       An REPLACE/DELETE/UPSERT statement or NULL.
  * @param cmp_def        Key definition of an index, with primary parts.
- * @param format         Format for REPLACE/DELETE tuples.
  * @param suppress_error True if ClientErrors must not be written to log.
  *
  * @retval NULL     Memory allocation error.
@@ -65,8 +64,7 @@ struct tuple_format;
  */
 struct tuple *
 vy_apply_upsert(const struct tuple *new_stmt, const struct tuple *old_stmt,
-		struct key_def *cmp_def, struct tuple_format *format,
-		bool suppress_error);
+		struct key_def *cmp_def, bool suppress_error);
 
 #if defined(__cplusplus)
 } /* extern "C" */
diff --git a/src/box/vy_write_iterator.c b/src/box/vy_write_iterator.c
index 0e804ac1..2c4dbf58 100644
--- a/src/box/vy_write_iterator.c
+++ b/src/box/vy_write_iterator.c
@@ -842,7 +842,7 @@ vy_read_view_merge(struct vy_write_iterator *stream, struct tuple *hint,
 		assert(!stream->is_last_level || hint == NULL ||
 		       vy_stmt_type(hint) != IPROTO_UPSERT);
 		struct tuple *applied = vy_apply_upsert(h->tuple, hint,
-				stream->cmp_def, stream->format, false);
+							stream->cmp_def, false);
 		if (applied == NULL)
 			return -1;
 		vy_stmt_unref_if_possible(h->tuple);
@@ -856,7 +856,7 @@ vy_read_view_merge(struct vy_write_iterator *stream, struct tuple *hint,
 		       vy_stmt_type(h->tuple) == IPROTO_UPSERT);
 		assert(result->tuple != NULL);
 		struct tuple *applied = vy_apply_upsert(h->tuple, result->tuple,
-					stream->cmp_def, stream->format, false);
+							stream->cmp_def, false);
 		if (applied == NULL)
 			return -1;
 		vy_stmt_unref_if_possible(result->tuple);
-- 
2.11.0




More information about the Tarantool-patches mailing list