Hi! Thanks for your review. Yes, i definitely missed diag_set with sequence_by_id. Will be fixed in v5.  Also i will reconsider combining child & parent space search. Sincerely, Ilya Kosarev >Суббота, 9 ноября 2019, 23:01 +03:00 от Sergey Ostanevich : > >Hi! > >LGTM, just couple of nits below you can add to a follow-up. > >Sergos > >>diff --git a/src/box/alter.cc b/src/box/alter.cc >>index e56d7c6cc..69a749326 100644 >>--- a/src/box/alter.cc >>+++ b/src/box/alter.cc >>@@ -4117,14 +4167,18 @@ on_replace_dd_sequence_data(struct trigger * /* trigger */, void *event) >>  struct tuple *old_tuple = stmt->old_tuple; >>  struct tuple *new_tuple = stmt->new_tuple; >> >>- uint32_t id = tuple_field_u32_xc(old_tuple ?: new_tuple, >>- BOX_SEQUENCE_DATA_FIELD_ID); >>- struct sequence *seq = sequence_cache_find(id); >>+ uint32_t id; >>+ if (tuple_field_u32(old_tuple ?: new_tuple, BOX_SEQUENCE_DATA_FIELD_ID, >>+ &id) != 0) >>+ return -1; >>+ struct sequence *seq = sequence_by_id(id); >>  if (seq == NULL) >>  return -1; >Note, that here we will miss the diag_set for non-zero value.  >Perhaps a question of further patches for sequence_by_id() - but I didn't find it in log > >>@@ -4958,10 +5034,10 @@ on_replace_dd_fk_constraint(struct trigger * /* trigger*/, void *event) >>  fk_constraint_def_new_from_tuple(old_tuple, >>  ER_DROP_FK_CONSTRAINT); >>  auto fk_def_guard = make_scoped_guard([=] { free(fk_def); }); >>- struct space *child_space = >>- space_cache_find_xc(fk_def->child_id); >>- struct space *parent_space = >>- space_cache_find_xc(fk_def->parent_id); >>+ struct space *child_space = space_cache_find(fk_def->child_id); >>+ struct space *parent_space = space_cache_find(fk_def->parent_id); >>+ if (child_space == NULL or parent_space == NULL) >>+ return -1; >Shall we return after the first error? Will they affect each other? > >> >      -- Ilya Kosarev