From: Alexander Turenko <alexander.turenko@tarantool.org> To: Mergen Imeev <imeevma@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH v1 1/1] lua: allow to push -2^63 in INTEGER field Date: Fri, 6 Dec 2019 03:41:46 +0300 [thread overview] Message-ID: <20191206004145.abskgni23bzcujtf@tkn_work_nb> (raw) In-Reply-To: <b2eab25df3c08ecb958924179d0f970d8d624b80.1574950131.git.imeevma@gmail.com> Nice catch! I think it worth to file an issue. The problem looks small, but it would be better to let users aware of it. Let's describe where the problem can appear: msgpack module (and so box functions, binary protocol responses -- everything that encodes lua values to msgpack except msgpackffi and so except tuple.update), json and yaml modules. Describe buggy and desired behaviour for -2^63: (I use type names from [msgpack spec][1] rather then our sizeless MP_*.) * msgpack module (the same for iproto responses I guess): expected int64, got float64. * box (insert into an integer column): expected success, got an error. * json / yaml modules (and so console output): expected precise value -9223372036854775808, got approximated one in scientific notation -9.2233720368548e+18. If you know other cases, let's add them too. Maybe something in SQL? I would add all those cases to corresponding tests: re msgpack, re msgpackffi, re json, re yaml, re iproto, re console, re box's insert, re tuple.update, (something else?). Yep, don't miss msgpackffi and tuple.update -- its behaviour is right, but a case is worthful anyway to catch possible future regressions. Let's consult with Kirill Yu. whether we should add those cases to existing files, add all them into one file or create a file for each one. Personally I vote for the first way. See other comments below. [1]: https://github.com/msgpack/msgpack/blob/master/spec.md WBR, Alexander Turenko. > lua: allow to push -2^63 in INTEGER field Nit: This header is a bit misleading: prefix states that it is about lua, but 'integer field' is more about box. I would give a general description in the header, like so: > lua/serializer: encode Lua number -2^63 as integer And would give all details about particular cases in the commit message. On Thu, Nov 28, 2019 at 05:11:49PM +0300, imeevma@tarantool.org wrote: > This patch fixes a bug that appeared due to commit 3a13be1d. Nit: We usually use form 3a13be1de38e79b6b7e0e7a6fa81f4c59c379f4e ('lua: fix lua_tofield() for 2**64 value') for a reference to a commit. > --- > https://github.com/tarantool/tarantool/tree/imeevma/small_fixes > > src/lua/utils.c | 2 +- > test/engine/insert.result | 28 ++++++++++++++++++++++++++++ > test/engine/insert.test.lua | 8 ++++++++ > 3 files changed, 37 insertions(+), 1 deletion(-) > > diff --git a/src/lua/utils.c b/src/lua/utils.c > index 7f7bf47..bad5f7b 100644 > --- a/src/lua/utils.c > +++ b/src/lua/utils.c > @@ -667,7 +667,7 @@ luaL_tofield(struct lua_State *L, struct luaL_serializer *cfg, int index, > } else if (num >= 0 && num < exp2(64)) { > field->type = MP_UINT; > field->ival = (uint64_t) num; > - } else if (num > -exp2(63) && num < exp2(63)) { > + } else if (num >= -exp2(63) && num < exp2(63)) { > field->type = MP_INT; > field->ival = (int64_t) num; > } else { > diff --git a/test/engine/insert.test.lua b/test/engine/insert.test.lua > index 39b1501..d6df60e 100644 > --- a/test/engine/insert.test.lua > +++ b/test/engine/insert.test.lua > @@ -123,3 +123,11 @@ s:select{} > s:drop() > fiber = nil > > +format = {{name = 'i', type = 'integer'}} > +s = box.schema.space.create('s', {format = format, engine = engine}) > +_ = s:create_index('ii') > +s:insert({-2^63}) > +s:insert({-2^64}) > +s:insert({2^63}) > +s:insert({2^64}) > +s:drop() Nit: Let's add 'gh-xxxx: short description' above the test case.
prev parent reply other threads:[~2019-12-06 0:41 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-28 14:11 imeevma 2019-12-06 0:41 ` Alexander Turenko [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=20191206004145.abskgni23bzcujtf@tkn_work_nb \ --to=alexander.turenko@tarantool.org \ --cc=imeevma@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v1 1/1] lua: allow to push -2^63 in INTEGER field' \ /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