[Tarantool-patches] [tarantool-patches] [PATCH v4 07/20] refactoring: remove exceptions from index_def_new_from_tuple

Ilya Kosarev i.kosarev at tarantool.org
Wed Oct 30 13:47:09 MSK 2019


Hi!

Thanks for your review.
We are using diag_raise here as far as index_def_check_sequence is already refactored and we need to process the error it returns, while sequence_field_from_tuple itself is not being refactored in this patch, so we can't return an error here, only raise an exception.

Sincerely,
Ilya Kosarev

>Среда, 30 октября 2019, 11:59 +03:00 от Sergey Ostanevich <sergos at tarantool.org>:
>
>Hi!
>
>LGTM, just a few nits in comments below
>
>> index 8d565e189..10a5f8d64 100644
>> --- a/src/box/alter.cc
>> +++ b/src/box/alter.cc
>> @@ -118,10 +118,10 @@ access_check_ddl(const char *name, uint32_t object_id, uint32_t owner_uid,
>>  }
>> 
>>  /**
>> - * Throw an exception if the given index definition
>> + * Return an error if the given index definition
>>   * is incompatible with a sequence.
>>   */
>> -static void
>> +static int
>>  index_def_check_sequence(struct index_def *index_def, uint32_t sequence_fieldno,
>>  			 const char *sequence_path, uint32_t sequence_path_len,
>>  			 const char *space_name)
>> @@ -142,24 +142,27 @@ index_def_check_sequence(struct index_def *index_def, uint32_t sequence_fieldno,
>>  		}
>>  	}
>>  	if (sequence_part == NULL) {
>> -		tnt_raise(ClientError, ER_MODIFY_INDEX, index_def->name,
>> -			  space_name, "sequence field must be a part of "
>> -			  "the index");
>> +		diag_set(ClientError, ER_MODIFY_INDEX, index_def->name,
>> +			 space_name, "sequence field must be a part of "
>> +				     "the index");
>> +		return -1;
>>  	}
>>  	enum field_type type = sequence_part->type;
>>  	if (type != FIELD_TYPE_UNSIGNED && type != FIELD_TYPE_INTEGER) {
>> -		tnt_raise(ClientError, ER_MODIFY_INDEX, index_def->name,
>> -			  space_name, "sequence cannot be used with "
>> -			  "a non-integer key");
>> +		diag_set(ClientError, ER_MODIFY_INDEX, index_def->name,
>> +			 space_name, "sequence cannot be used with "
>> +				     "a non-integer key");
>> +		return -1;
>>  	}
>> +	return 0;
>>  }
>> 
>>  /**
>>   * Support function for index_def_new_from_tuple(..)
>> - * Checks tuple (of _index space) and throws a nice error if it is invalid
>> + * Checks tuple (of _index space) and sets a nice diag if it is invalid
>Should be 'Return an error', same as for the case above.
>
>> @@ -4066,8 +4099,9 @@ sequence_field_from_tuple(struct space *space, struct tuple *tuple,
>>  		if (path_len == 0)
>>  			path_raw = NULL;
>>  	}
>> -	index_def_check_sequence(pk->def, fieldno, path_raw, path_len,
>> -				 space_name(space));
>> +	if (index_def_check_sequence(pk->def, fieldno, path_raw, path_len,
>> +				 space_name(space)) != 0)
>> +		diag_raise();
>
>I wonder why we leave some diag_raise() and not diag_set() plus return
>-1 or NULL?
>
>
>regards,
>Sergos
>


-- 
Ilya Kosarev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20191030/9ea1e95d/attachment.html>


More information about the Tarantool-patches mailing list