Tarantool development patches archive
 help / color / mirror / Atom feed
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.

  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