[tarantool-patches] Re: [PATCH v4 05/20] refactoring: clear privilege managing triggers from exceptions
Sergey Ostanevich
sergos at tarantool.org
Fri Oct 18 17:21:24 MSK 2019
Hi!
On 23 Sep 18:56, Ilya Kosarev wrote:
> modify_priv, revoke_priv & on_replace_dd_priv triggers are
> cleared from exceptions. A list of functions: priv_def_check,
> priv_def_create_from_tuple, user_grant_priv, user_reload_privs,
> rebuild_effective_grants, grant_revoke, role_check, role_grant,
> role_revoke, priv_grant, access_check_ddl & txn_alter_trigger_new
> were also refactored to achieve it. Their usages are updated.
> user_find_xc is removed as far as it is not needed anymore.
>
> Part of #4247
> ---
> src/box/alter.cc | 334 ++++++++++++++++++++++++++++++++++-------------
> src/box/user.cc | 79 +++++++----
> src/box/user.h | 20 +--
> 3 files changed, 303 insertions(+), 130 deletions(-)
>
> diff --git a/src/box/alter.cc b/src/box/alter.cc
> index d4cb9e8d8..85304c47d 100644
[...]
> @@ -708,8 +710,15 @@ public:
> static struct trigger *
> txn_alter_trigger_new(trigger_f run, void *data)
> {
> + size_t size = sizeof(struct trigger);
> struct trigger *trigger = (struct trigger *)
> - region_calloc_object_xc(&in_txn()->region, struct trigger);
> + region_aligned_alloc(&in_txn()->region, size,
> + alignof(struct trigger));
> + if (trigger == NULL) {
> + diag_set(OutOfMemory, size, "region", "new slab");
> + return NULL;
> + }
> + trigger = (struct trigger *)memset(trigger, 0, size);
> trigger->run = run;
> trigger->data = data;
> trigger->destroy = NULL;
After memset of the whole struct there's no need in NULL for the field.
Although, I believe contemporary compiller will expand the memset and remove this.
Otherwise LGTM.
Sergos
More information about the Tarantool-patches
mailing list