Skip to content
Snippets Groups Projects
Commit 9460ff26 authored by Roman Tsisyk's avatar Roman Tsisyk Committed by Roman Tsisyk
Browse files

tuple: extract tuple_format_eq() from vy_stmt.c

Needed for #2754
parent 78be091b
No related branches found
No related tags found
No related merge requests found
......@@ -211,6 +211,20 @@ tuple_format_new(struct tuple_format_vtab *vtab, struct key_def **keys,
return format;
}
bool
tuple_format_eq(const struct tuple_format *a, const struct tuple_format *b)
{
if (a->field_map_size != b->field_map_size ||
a->field_count != b->field_count)
return false;
for (uint32_t i = 0; i < a->field_count; ++i) {
if (a->fields[i].type != b->fields[i].type ||
a->fields[i].offset_slot != b->fields[i].offset_slot)
return false;
}
return true;
}
struct tuple_format *
tuple_format_dup(const struct tuple_format *src)
{
......
......@@ -152,6 +152,14 @@ struct tuple_format *
tuple_format_new(struct tuple_format_vtab *vtab, struct key_def **keys,
uint16_t key_count, uint16_t extra_size);
/**
* Check that two tuple formats are identical.
* @param a format a
* @param b format b
*/
bool
tuple_format_eq(const struct tuple_format *a, const struct tuple_format *b);
/**
* Register the duplicate of the specified format.
* @param src Original format.
......
......@@ -325,7 +325,6 @@ vy_stmt_replace_from_upsert(struct tuple_format *replace_format,
/* Copy statement data excluding UPSERT operations */
struct tuple_format *format = tuple_format_by_id(upsert->format_id);
(void)format;
/*
* UPSERT must have the n_upserts field in the extra
* memory.
......@@ -335,10 +334,7 @@ vy_stmt_replace_from_upsert(struct tuple_format *replace_format,
* In other fields the REPLACE tuple format must equal to
* the UPSERT tuple format.
*/
assert(format->field_map_size == replace_format->field_map_size);
assert(format->field_count == replace_format->field_count);
assert(! memcmp(format->fields, replace_format->fields,
sizeof(struct tuple_field_format) * format->field_count));
assert(tuple_format_eq(format, replace_format));
struct tuple *replace = vy_stmt_alloc(replace_format, bsize);
if (replace == NULL)
return NULL;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment