From: Nikita Pettik <korablev@tarantool.org> To: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH] sql: fix assert in sql_type_result() Date: Tue, 21 Jan 2020 01:25:16 +0300 [thread overview] Message-ID: <20200120222516.GF82780@tarantool.org> (raw) In-Reply-To: <69477df18586e6e9700d2bb12d456c0034909a3c.1579099022.git.korablev@tarantool.org> On 15 Jan 18:01, Nikita Pettik wrote: > Accidentally, assert in sql_type_result() checking argument types was > changed in 64745b10c, so that now it may fail even on correct values. > Let's revert this change. > > Closes #4728 > --- > Branch: https://github.com/tarantool/tarantool/tree/np/gh-4728-fix-assert-in-sql_type_result > Issue: https://github.com/tarantool/tarantool/issues/4728 Pushed to master and 2.2 as trivial > src/box/sql/expr.c | 2 +- > test/sql/types.result | 27 +++++++++++++++++++++++++++ > test/sql/types.test.lua | 13 +++++++++++++ > 3 files changed, 41 insertions(+), 1 deletion(-) > > diff --git a/src/box/sql/expr.c b/src/box/sql/expr.c > index 63808941d..bc2182446 100644 > --- a/src/box/sql/expr.c > +++ b/src/box/sql/expr.c > @@ -392,7 +392,7 @@ sql_type_result(enum field_type lhs, enum field_type rhs) > return FIELD_TYPE_DOUBLE; > if (lhs == FIELD_TYPE_INTEGER || rhs == FIELD_TYPE_INTEGER) > return FIELD_TYPE_INTEGER; > - assert(lhs == FIELD_TYPE_UNSIGNED && > + assert(lhs == FIELD_TYPE_UNSIGNED || > rhs == FIELD_TYPE_UNSIGNED); > return FIELD_TYPE_UNSIGNED; > } > diff --git a/test/sql/types.result b/test/sql/types.result > index ac4c91e32..f0c34b6fa 100644 > --- a/test/sql/types.result > +++ b/test/sql/types.result > @@ -2133,3 +2133,30 @@ box.execute("SELECT d, TYPEOF(d) FROM t5;") > - [5.5, 'double'] > - [6000000, 'double'] > ... > +-- gh-4728: make sure that given query doesn't result in > +-- assertion fault. > +-- > +s = box.schema.space.create('s') > +--- > +... > +_ = s:create_index('pk') > +--- > +... > +s:format({ \ > + [1] = {name = 'id', type = 'unsigned'}, \ > + [2] = {name = 'v', type = 'string', is_nullable = true}, \ > +}) > +--- > +... > +box.execute([[SELECT * FROM "s" WHERE "id" = ?;]]) > +--- > +- metadata: > + - name: id > + type: unsigned > + - name: v > + type: string > + rows: [] > +... > +s:drop() > +--- > +... > diff --git a/test/sql/types.test.lua b/test/sql/types.test.lua > index c677b27cb..bd14b342d 100644 > --- a/test/sql/types.test.lua > +++ b/test/sql/types.test.lua > @@ -474,3 +474,16 @@ box.execute("SELECT 3e3, typeof(3e3);") > box.execute("CREATE TABLE t5 (d DOUBLE PRIMARY KEY);") > box.execute("INSERT INTO t5 VALUES (4), (5.5), (6e6);") > box.execute("SELECT d, TYPEOF(d) FROM t5;") > + > +-- gh-4728: make sure that given query doesn't result in > +-- assertion fault. > +-- > +s = box.schema.space.create('s') > +_ = s:create_index('pk') > +s:format({ \ > + [1] = {name = 'id', type = 'unsigned'}, \ > + [2] = {name = 'v', type = 'string', is_nullable = true}, \ > +}) > + > +box.execute([[SELECT * FROM "s" WHERE "id" = ?;]]) > +s:drop() > -- > 2.15.1 >
prev parent reply other threads:[~2020-01-20 22:25 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-15 15:01 Nikita Pettik 2020-01-20 22:25 ` Nikita Pettik [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=20200120222516.GF82780@tarantool.org \ --to=korablev@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH] sql: fix assert in sql_type_result()' \ /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