From 796d4c7dc9e3c944fdc20f965936367645e98136 Mon Sep 17 00:00:00 2001
From: Ilya Verbin <iverbin@tarantool.org>
Date: Thu, 6 Jul 2023 20:23:45 +0300
Subject: [PATCH] box: move data and size to field_default_value structure

This structure will be extended in the next commit.

Part of #8609

NO_DOC=refactoring
NO_TEST=refactoring
NO_CHANGELOG=refactoring
---
 src/box/tuple_format.c | 36 +++++++++++++++++-------------------
 src/box/tuple_format.h | 16 +++++++++++-----
 2 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/src/box/tuple_format.c b/src/box/tuple_format.c
index d8fab7233a..0d25e3c87c 100644
--- a/src/box/tuple_format.c
+++ b/src/box/tuple_format.c
@@ -144,13 +144,13 @@ tuple_format_cmp(const struct tuple_format *format1,
 			if (cmp != 0)
 				return cmp;
 		}
-		if (field_a->default_value_size != field_b->default_value_size)
-			return (int)field_a->default_value_size -
-			       (int)field_b->default_value_size;
-		if (field_a->default_value_size != 0) {
-			int cmp = memcmp(field_a->default_value,
-					 field_b->default_value,
-					 field_a->default_value_size);
+		if (field_a->default_value.size != field_b->default_value.size)
+			return (int)field_a->default_value.size -
+			       (int)field_b->default_value.size;
+		if (field_a->default_value.size != 0) {
+			int cmp = memcmp(field_a->default_value.data,
+					 field_b->default_value.data,
+					 field_a->default_value.size);
 			if (cmp != 0)
 				return cmp;
 		}
@@ -183,9 +183,9 @@ tuple_format_hash(struct tuple_format *format)
 		for (uint32_t i = 0; i < f->constraint_count; ++i)
 			size += tuple_constraint_hash_process(&f->constraint[i],
 							      &h, &carry);
-		PMurHash32_Process(&h, &carry, f->default_value,
-				   (int)f->default_value_size);
-		size += f->default_value_size;
+		PMurHash32_Process(&h, &carry, f->default_value.data,
+				   (int)f->default_value.size);
+		size += f->default_value.size;
 	}
 #undef TUPLE_FIELD_MEMBER_HASH
 	size += tuple_dictionary_hash_process(format->dict, &h, &carry);
@@ -223,8 +223,6 @@ tuple_field_new(void)
 	field->multikey_required_fields = NULL;
 	field->constraint_count = 0;
 	field->constraint = NULL;
-	field->default_value = NULL;
-	field->default_value_size = 0;
 	return field;
 }
 
@@ -239,7 +237,7 @@ tuple_field_delete(struct tuple_field *field)
 	free(field->constraint);
 	if (field->sql_default_value_expr != NULL)
 		tuple_format_expr_delete(field->sql_default_value_expr);
-	free(field->default_value);
+	free(field->default_value.data);
 	free(field);
 }
 
@@ -572,8 +570,8 @@ tuple_format_create(struct tuple_format *format, struct key_def *const *keys,
 			size_t size = fields[i].default_value_size;
 			char *buf = xmalloc(size);
 			memcpy(buf, default_value, size);
-			field->default_value = buf;
-			field->default_value_size = size;
+			field->default_value.data = buf;
+			field->default_value.size = size;
 			format->default_field_count = i + 1;
 		}
 	}
@@ -1524,8 +1522,8 @@ tuple_format_apply_defaults(struct tuple_format *format, const char **data,
 			field = tuple_format_field(format, i);
 
 		if (is_null && tuple_field_has_default(field)) {
-			tuple_builder_add(&builder, field->default_value,
-					  field->default_value_size, 1);
+			tuple_builder_add(&builder, field->default_value.data,
+					  field->default_value.size, 1);
 			is_tuple_changed = true;
 		} else {
 			tuple_builder_add(&builder, p, p_next - p, 1);
@@ -1539,8 +1537,8 @@ tuple_format_apply_defaults(struct tuple_format *format, const char **data,
 	for ( ; i < format->default_field_count; i++) {
 		struct tuple_field *field = tuple_format_field(format, i);
 		if (tuple_field_has_default(field)) {
-			tuple_builder_add(&builder, field->default_value,
-					  field->default_value_size, 1);
+			tuple_builder_add(&builder, field->default_value.data,
+					  field->default_value.size, 1);
 			is_tuple_changed = true;
 		} else {
 			tuple_builder_add_nil(&builder);
diff --git a/src/box/tuple_format.h b/src/box/tuple_format.h
index 4b8feafe98..7c948d048b 100644
--- a/src/box/tuple_format.h
+++ b/src/box/tuple_format.h
@@ -106,6 +106,14 @@ struct tuple_format_vtab {
 
 struct tuple_constraint;
 
+/** Tuple field default value. */
+struct field_default_value {
+	/** MsgPack with the default value. */
+	char *data;
+	/** Size of the data. */
+	size_t size;
+};
+
 /** Tuple field meta information for tuple_format. */
 struct tuple_field {
 	/** Unique field identifier. */
@@ -162,10 +170,8 @@ struct tuple_field {
 	uint32_t constraint_count;
 	/** AST for parsed SQL default value. */
 	struct Expr *sql_default_value_expr;
-	/** MsgPack with the default value. */
-	char *default_value;
-	/** Size of the default value. */
-	size_t default_value_size;
+	/** Tuple field default value. */
+	struct field_default_value default_value;
 };
 
 /**
@@ -186,7 +192,7 @@ tuple_field_is_nullable(const struct tuple_field *tuple_field)
 static inline bool
 tuple_field_has_default(const struct tuple_field *tuple_field)
 {
-	return tuple_field->default_value != NULL;
+	return tuple_field->default_value.data != NULL;
 }
 
 /**
-- 
GitLab