From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: tarantool-patches@freelists.org, Nikita Pettik <korablev@tarantool.org>
Cc: kostja@tarantool.org
Subject: [tarantool-patches] Re: [PATCH 3/9] sql: use msgpack types instead of custom ones
Date: Tue, 16 Apr 2019 17:12:48 +0300 [thread overview]
Message-ID: <374916ec-2e49-643f-eccb-42f9d66e340e@tarantool.org> (raw)
In-Reply-To: <7d55169718d4bc193a41710da12cfd6a7d4edebc.1555252410.git.korablev@tarantool.org>
Thanks for the patch! See 4 comments below.
On 14/04/2019 18:04, Nikita Pettik wrote:
> This patch provides straightforward refactoring replacing enum sql_type
> with enum mp_type. Note that we use msgpack format instead of field_type
> since it is more suitable when dealing with NULLs.
> ---
> src/box/bind.c | 37 ++++++------------
> src/box/execute.c | 12 +++---
> src/box/lua/execute.c | 7 +---
> src/box/lua/lua_sql.c | 12 +++---
> src/box/sql/date.c | 2 +-
> src/box/sql/func.c | 100 ++++++++++++++++++++++++------------------------
> src/box/sql/legacy.c | 2 +-
> src/box/sql/sqlInt.h | 16 ++------
> src/box/sql/vdbeapi.c | 66 ++++++++++----------------------
> src/box/sql/whereexpr.c | 2 +-
> 10 files changed, 102 insertions(+), 154 deletions(-)
>
> diff --git a/src/box/bind.c b/src/box/bind.c
> index 4b57e23c8..5aa79751a 100644
> --- a/src/box/bind.c
> +++ b/src/box/bind.c
> @@ -138,6 +121,7 @@ sql_bind_decode(struct sql_bind *bind, int i, const char **packet)
> default:
> unreachable();
> }
> + bind->type = type;
1. struct sql_bind.type still is uint8_t and commented as
'SQL type of the value.'. Please, change its type to enum mp_type
and say in the comment 'MessagePack type of the value.'
> return 0;
> }
> > diff --git a/src/box/sql/date.c b/src/box/sql/date.c
> index 5f5272ea3..ead0c01d0 100644
> --- a/src/box/sql/date.c
> +++ b/src/box/sql/date.c
> @@ -937,7 +937,7 @@ isDate(sql_context * context, int argc, sql_value ** argv, DateTime * p)
> if (argc == 0) {
> return setDateTimeToCurrent(context, p);
> }
> - if ((eType = sql_value_type(argv[0])) == SQL_FLOAT
> + if ((eType = sql_value_type(argv[0])) == MP_DOUBLE
2. Firstly, the code is commented out. Secondly, sql_value_type
does not exist anymore. Thirdly, eType is of type int, not
enum mp_type, and can not be compared with MP_DOUBLE.
Please, rename sql_value_mp_type to sql_value_type, because we
do not have 'not mp' type anymore. Then this hunk will be ok
except the third objection.
> || eType == SQL_INTEGER) {
> setRawDateNumber(p, sql_value_double(argv[0]));
> } else {
> diff --git a/src/box/sql/func.c b/src/box/sql/func.c
> index 9adfeec67..3cdb119c8 100644
> --- a/src/box/sql/func.c
> +++ b/src/box/sql/func.c
> @@ -87,10 +87,10 @@ minmaxFunc(sql_context * context, int argc, sql_value ** argv)
> pColl = sqlGetFuncCollSeq(context);
> assert(mask == -1 || mask == 0);
> iBest = 0;
> - if (sql_value_type(argv[0]) == SQL_NULL)
> + if (sql_value_mp_type(argv[0]) == MP_NIL)
3. Please, move that check into a separate static inline
function in a header file. It appeared to be used often.
A possible name 'sql_value_is_null'.
> return;
> for (i = 1; i < argc; i++) {
> - if (sql_value_type(argv[i]) == SQL_NULL)
> + if (sql_value_mp_type(argv[i]) == MP_NIL)
> return;
> if ((sqlMemCompare(argv[iBest], argv[i], pColl) ^ mask) >=
> 0) {
> @@ -139,15 +139,15 @@ lengthFunc(sql_context * context, int argc, sql_value ** argv)
>
> assert(argc == 1);
> UNUSED_PARAMETER(argc);
> - switch (sql_value_type(argv[0])) {
> - case SQL_BLOB:
> - case SQL_INTEGER:
> - case SQL_FLOAT:{
> + switch (sql_value_mp_type(argv[0])) {
> + case MP_BIN:
> + case MP_INT:
> + case MP_DOUBLE:{
4. Probably you could fix part of this:
https://github.com/tarantool/tarantool/issues/4159 in scope of
this commit, alongside.
> sql_result_int(context,
> sql_value_bytes(argv[0]));
> break;
> }
> - case SQL_TEXT:{
> + case MP_STR:{
> const unsigned char *z = sql_value_text(argv[0]);
> if (z == 0)
next prev parent reply other threads:[~2019-04-16 14:12 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-14 15:03 [tarantool-patches] [PATCH 0/9] Introduce type BOOLEAN in SQL Nikita Pettik
2019-04-14 15:03 ` [tarantool-patches] [PATCH 1/9] sql: refactor mem_apply_numeric_type() Nikita Pettik
2019-04-14 15:04 ` [tarantool-patches] [PATCH 2/9] sql: disallow text values participate in sum() aggregate Nikita Pettik
2019-04-16 14:12 ` [tarantool-patches] " Vladislav Shpilevoy
2019-04-18 17:54 ` n.pettik
2019-04-22 18:02 ` Vladislav Shpilevoy
2019-04-23 19:58 ` n.pettik
2019-04-14 15:04 ` [tarantool-patches] [PATCH 3/9] sql: use msgpack types instead of custom ones Nikita Pettik
2019-04-16 14:12 ` Vladislav Shpilevoy [this message]
2019-04-18 17:54 ` [tarantool-patches] " n.pettik
2019-04-22 18:02 ` Vladislav Shpilevoy
2019-04-23 19:58 ` n.pettik
2019-04-14 15:04 ` [tarantool-patches] [PATCH 4/9] sql: introduce type boolean Nikita Pettik
2019-04-16 14:12 ` [tarantool-patches] " Vladislav Shpilevoy
2019-04-18 17:54 ` n.pettik
2019-04-22 18:02 ` Vladislav Shpilevoy
2019-04-23 19:58 ` n.pettik
2019-04-23 21:06 ` Vladislav Shpilevoy
2019-04-14 15:04 ` [tarantool-patches] [PATCH 5/9] sql: improve type determination for column meta Nikita Pettik
2019-04-16 14:12 ` [tarantool-patches] " Vladislav Shpilevoy
2019-04-18 17:54 ` n.pettik
2019-04-22 18:02 ` Vladislav Shpilevoy
2019-04-23 19:58 ` n.pettik
2019-04-14 15:04 ` [tarantool-patches] [PATCH 6/9] sql: make comparison predicate return boolean Nikita Pettik
2019-04-16 14:12 ` [tarantool-patches] " Vladislav Shpilevoy
2019-04-18 17:54 ` n.pettik
2019-04-14 15:04 ` [tarantool-patches] [PATCH 7/9] sql: make predicates accept and " Nikita Pettik
2019-04-16 14:12 ` [tarantool-patches] " Vladislav Shpilevoy
2019-04-18 17:55 ` n.pettik
2019-04-14 15:04 ` [tarantool-patches] [PATCH 9/9] sql: make <search condition> accept only boolean Nikita Pettik
2019-04-16 14:12 ` [tarantool-patches] " Vladislav Shpilevoy
2019-04-18 17:55 ` n.pettik
2019-04-22 18:02 ` Vladislav Shpilevoy
2019-04-23 19:59 ` n.pettik
2019-04-23 21:06 ` Vladislav Shpilevoy
2019-04-23 22:01 ` n.pettik
[not found] ` <b2a84f129c2343d3da3311469cbb7b20488a21c2.1555252410.git.korablev@tarantool.org>
2019-04-16 14:12 ` [tarantool-patches] Re: [PATCH 8/9] sql: make LIKE predicate return boolean result Vladislav Shpilevoy
2019-04-18 17:55 ` n.pettik
2019-04-22 18:02 ` Vladislav Shpilevoy
2019-04-23 19:58 ` n.pettik
2019-04-24 10:28 ` [tarantool-patches] Re: [PATCH 0/9] Introduce type BOOLEAN in SQL Vladislav Shpilevoy
2019-04-25 8:46 ` Kirill Yukhin
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=374916ec-2e49-643f-eccb-42f9d66e340e@tarantool.org \
--to=v.shpilevoy@tarantool.org \
--cc=korablev@tarantool.org \
--cc=kostja@tarantool.org \
--cc=tarantool-patches@freelists.org \
--subject='[tarantool-patches] Re: [PATCH 3/9] sql: use msgpack types instead of custom ones' \
/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