From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Roman Khabibov <roman.habibov@tarantool.org>, tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH v2 1/3] box: introduce constraint names hash table Date: Sat, 7 Dec 2019 17:34:59 +0100 [thread overview] Message-ID: <e752658b-1145-f8e4-fbcd-4266735a2f85@tarantool.org> (raw) In-Reply-To: <3EB26BFF-D4AA-4AA0-BD3B-83992975C4BD@tarantool.org> Thanks for the fixes! >>> diff --git a/src/box/constraint_def.h b/src/box/constraint_def.h >>> new file mode 100755 >>> index 000000000..ef238eb46 >>> --- /dev/null >>> +++ b/src/box/constraint_def.h >>> @@ -0,0 +1,83 @@ >>> +#ifndef INCLUDES_BOX_CONSTRAINT_DEF_H >>> +#define INCLUDES_BOX_CONSTRAINT_DEF_H >> >> 3. Please, take a look at other header guards. They >> have a certain naming policy. For example, tuple.h in >> box/ has a guard TARANTOOL_BOX_TUPLE_H_INCLUDED. I guess >> you could use TARANTOOL_BOX_CONSTRAINT_DEF_H_INCLUDED. >> >> But even better would be to use #pragma once. I don't >> know whether they are allowed in our code though. > I think #pragma is disallowed, because I didn’t found it by grep in the > src. > I asked Kirill. He said that pragma is a great idea. Please, use it in all new files, including this one. >>> --- a/src/box/space.h >>> +++ b/src/box/space.h >>> @@ -516,6 +519,42 @@ space_add_ck_constraint(struct space *space, struct ck_constraint *ck); >>> +struct constraint_def * >>> +space_constraint_def_by_name(struct space *space, const char *name); >>> + >>> +/** >>> + * Put node with @a def to the constraint hash table of @a space. >>> + * >>> + * @param space Space. >>> + * @param def Constraint def. >>> + * >>> + * @retval 0 Success. >>> + * @retval -1 Memory allocation error. >>> + */ >>> +int >>> +space_put_constraint(struct space *space, struct constraint_def *def); >>> + >>> +/** >>> + * Remove node with @a name from the constraint hash table of @a >>> + * space. But don't destroy the constraint def object binded to >>> + * this @a name. >>> + * >>> + * @param space Space. >>> + * @param name Constraint name. >>> + */ >>> +void >>> +space_drop_constraint(struct space *space, const char *name); >> >> 6. That function is a bit confusing. I understand, why >> do you need to not destroy a constraint right here. But >> drop() name really assumes that. Moreover, in most of the >> places you do space_constraint_def_by_name() before >> space_drop_constraint(). So this is a double search. I >> propose you to rename drop to pop, and make it return the >> old constraint. It will make clear, that the constraint is >> not deleted here, and will eliminate the double search. > But the first one is almost copy of the second one. Is it ok? Yes. These two functions are small enough. I tried to make a third one which they would use, but it did not make the code smaller. > diff --git a/src/box/space.h b/src/box/space.h > index 7926aa65e..0c23c224c 100644 > --- a/src/box/space.h > +++ b/src/box/space.h > @@ -234,6 +235,8 @@ struct space { > * of parent constraints as well as child ones. > */ > uint64_t fk_constraint_mask; > + /** Hash table with constraint names. */ > + struct mh_strnptr_t *constraint_names; Please, rename to 'constraints'. These are not just 'names' anymore. Sorry for the nit.
next prev parent reply other threads:[~2019-12-07 16:35 UTC|newest] Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-28 18:34 [Tarantool-patches] [PATCH v2 0/2] Add constraint names hash table to space Roman Khabibov 2019-11-28 18:34 ` [Tarantool-patches] [PATCH v2 1/2] box: introduce constraint names hash table Roman Khabibov 2019-11-30 1:03 ` Vladislav Shpilevoy 2019-12-04 16:23 ` [Tarantool-patches] [PATCH v2 1/3] " Roman Khabibov 2019-12-07 16:34 ` Vladislav Shpilevoy [this message] 2019-12-10 12:48 ` Roman Khabibov 2019-11-28 18:34 ` [Tarantool-patches] [PATCH v2 2/2] sql: make constraint operations transactional Roman Khabibov 2019-11-29 7:38 ` Roman Khabibov 2019-11-30 1:03 ` Vladislav Shpilevoy 2019-12-04 16:23 ` [Tarantool-patches] [PATCH v2 2/3] " Roman Khabibov 2019-12-05 18:43 ` Roman Khabibov 2019-12-07 16:35 ` Vladislav Shpilevoy 2019-12-10 12:49 ` [Tarantool-patches] [PATCH v2 2/3] box: " Roman Khabibov 2019-12-15 22:26 ` Vladislav Shpilevoy 2019-12-17 15:03 ` Roman Khabibov 2019-12-28 0:18 ` Nikita Pettik 2019-12-28 11:07 ` Vladislav Shpilevoy 2019-12-29 0:07 ` Nikita Pettik 2019-12-29 15:51 ` Vladislav Shpilevoy 2019-12-29 22:28 ` Nikita Pettik 2019-12-29 22:35 ` Vladislav Shpilevoy 2019-12-30 11:12 ` Sergey Ostanevich 2019-12-30 12:05 ` Nikita Pettik 2019-12-21 20:54 ` Sergey Ostanevich 2019-12-22 14:59 ` Vladislav Shpilevoy 2019-12-24 12:06 ` Roman Khabibov 2019-11-30 1:03 ` [Tarantool-patches] [PATCH v2 0/2] Add constraint names hash table to space Vladislav Shpilevoy 2019-12-04 16:23 ` [Tarantool-patches] [PATCH v2 0/3] " Roman Khabibov 2019-12-07 16:34 ` Vladislav Shpilevoy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=e752658b-1145-f8e4-fbcd-4266735a2f85@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=roman.habibov@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v2 1/3] box: introduce constraint names hash table' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox