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