Tarantool development patches archive
 help / color / mirror / Atom feed
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: Chris Sosnin <k.sosnin@tarantool.org>,
	tarantool-patches@dev.tarantool.org,
	Kirill Yukhin <kyukhin@tarantool.org>
Subject: Re: [Tarantool-patches] [PATCH v2] box: frommap() bug fix
Date: Thu, 28 Nov 2019 00:40:46 +0100	[thread overview]
Message-ID: <d5f2104e-620e-ffd6-f1fa-3114b4c5963e@tarantool.org> (raw)
In-Reply-To: <20191127213037.94837-1-k.sosnin@tarantool.org>

Thanks for the patch!

When changes are minor, it is not worth sending a new
version. Just respond to my comments in the same thread,
and append a new patch version to the end of the response.

Also, please, when address my objections, answer to them
inline with a piece of diff for that concrete objection.

So your response email should look like this:

    > Cite of my comment 1

    Your answer 1.
    Your diff to that comment.

    > Cite of my comment 2

    Your answer 2.
    Your diff to that comment.

    Etc.

    New version of the patch.

In case you send a new version of the patch in a new thread,
you should respond to my comments in the old thread.

When you cite my comments, and respond to each of them, you
make the review simpler and faster.

This patch LGTM.

On 27/11/2019 22:30, Chris Sosnin wrote:
> Thank you for the review!
> Fixed version below.
> branch: https://github.com/tarantool/tarantool/tree/ksosnin/gh-4262-frommap-error-handle
> issue: https://github.com/tarantool/tarantool/issues/4262
> 
> - If an optional argument is provided for
>   space_object:frommap() (which is {table = true|false}),
>   type match for first arguments is omitted, which is
>   incorrect. We should return the result only after making
>   sure it is possible to build a tuple.
> 
> - If there is a type mismatch, however, frommap() does not
>   return nil, err as it is mentioned in the description, so we
>   change it to be this way.
> 
> Closes #4262
> ---
>  src/box/lua/space.cc    | 13 +++++++++----
>  test/box/tuple.result   |  8 +++++++-
>  test/box/tuple.test.lua |  1 +
>  3 files changed, 17 insertions(+), 5 deletions(-)
> 
> diff --git a/src/box/lua/space.cc b/src/box/lua/space.cc
> index f6e96f0c0..e772a924d 100644
> --- a/src/box/lua/space.cc
> +++ b/src/box/lua/space.cc
> @@ -580,14 +580,19 @@ lbox_space_frommap(struct lua_State *L)
>  		}
>  		lua_rawseti(L, -3, fieldno+1);
>  	}
> -	if (table)
> -		return 1;
> 
>  	lua_replace(L, 1);
>  	lua_settop(L, 1);
>  	tuple = luaT_tuple_new(L, -1, space->format);
> -	if (tuple == NULL)
> -		return luaT_error(L);
> +	if (tuple == NULL) {
> +		struct error *e = diag_last_error(&fiber()->diag);
> +		lua_pushnil(L);
> +		lua_pushstring(L, e->errmsg);
> +		return 2;
> +	}
> +	if (table) {
> +		return 1;
> +	}
>  	luaT_pushtuple(L, tuple);
>  	return 1;
>  usage_error:
> diff --git a/test/box/tuple.result b/test/box/tuple.result
> index 9140211b7..78f919deb 100644
> --- a/test/box/tuple.result
> +++ b/test/box/tuple.result
> @@ -1121,7 +1121,13 @@ s:frommap()
>  ...
>  s:frommap({})
>  ---
> -- error: Tuple field 1 required by space format is missing
> +- null
> +- Tuple field 1 required by space format is missing
> +...
> +s:frommap({ddd = 'fail', aaa = 2, ccc = 3, bbb = 4}, {table=true})
> +---
> +- null
> +- 'Tuple field 4 type does not match one required by operation: expected unsigned'
>  ...
>  s:frommap({ddd = 1, aaa = 2, ccc = 3, bbb = 4}, {table = true})
>  ---
> diff --git a/test/box/tuple.test.lua b/test/box/tuple.test.lua
> index 3ac2902fe..baf2f22d5 100644
> --- a/test/box/tuple.test.lua
> +++ b/test/box/tuple.test.lua
> @@ -373,6 +373,7 @@ s:frommap({ddd = 1, aaa = 2, bbb = 3})
>  s:frommap({ddd = 1, aaa = 2, ccc = 3, eee = 4})
>  s:frommap()
>  s:frommap({})
> +s:frommap({ddd = 'fail', aaa = 2, ccc = 3, bbb = 4}, {table=true})
>  s:frommap({ddd = 1, aaa = 2, ccc = 3, bbb = 4}, {table = true})
>  s:frommap({ddd = 1, aaa = 2, ccc = 3, bbb = 4}, {table = false})
>  s:frommap({ddd = 1, aaa = 2, ccc = 3, bbb = box.NULL})
> --
> 2.21.0 (Apple Git-122.2)
> 

      parent reply	other threads:[~2019-11-27 23:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-27 21:30 Chris Sosnin
2019-11-27 21:30 ` [Tarantool-patches] [PATCH v2] build: GCC warning on strncpy Chris Sosnin
2019-11-27 23:40   ` Vladislav Shpilevoy
2019-12-16 13:40   ` Kirill Yukhin
2019-11-27 23:40 ` Vladislav Shpilevoy [this message]

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=d5f2104e-620e-ffd6-f1fa-3114b4c5963e@tarantool.org \
    --to=v.shpilevoy@tarantool.org \
    --cc=k.sosnin@tarantool.org \
    --cc=kyukhin@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v2] box: frommap() bug fix' \
    /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