From: Mergen Imeev via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH v1 7/7] sql: remove unused MEM cast functions Date: Fri, 6 Aug 2021 02:45:08 +0300 [thread overview] Message-ID: <20210805234508.GF81912@tarantool.org> (raw) In-Reply-To: <42c5078b-fee5-3e7e-7680-b57597371107@tarantool.org> Thank you for the review! My answers and new patch below. Also, patch become a lot less since I decided to not remove "precise" cast functions and mem_cast_implicit(). On Thu, Aug 05, 2021 at 12:27:41AM +0200, Vladislav Shpilevoy wrote: > Thanks for the patch! > > > diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c > > index 4a1fdb637..fc06e502e 100644 > > --- a/src/box/sql/vdbeaux.c > > +++ b/src/box/sql/vdbeaux.c > > @@ -2323,17 +2323,15 @@ sqlVdbeDb(Vdbe * v) > > * The returned value must be freed by the caller using sqlValueFree(). > > */ > > sql_value * > > -sqlVdbeGetBoundValue(Vdbe * v, int iVar, u8 aff) > > +sqlVdbeGetBoundValue(Vdbe * v, int iVar) > > 1. No need for a whitespace after *. > Fixed. > > { > > assert(iVar > 0); > > if (v) { > > Mem *pMem = &v->aVar[iVar - 1]; > > if (!mem_is_null(pMem)) { > > sql_value *pRet = sqlValueNew(v->db); > > - if (pRet) { > > + if (pRet) > > 2. != NULL. Fixed. New patch: commit a399bca95e72aea615600e3e8c6a15a8c11f2987 Author: Mergen Imeev <imeevma@gmail.com> Date: Tue Jul 27 23:37:06 2021 +0300 sql: remove unused MEM cast functions This patch removes functions that become unused due to changes of implicit and explicit cast rules. Part of #4470 diff --git a/src/box/sql/mem.c b/src/box/sql/mem.c index e654cac41..d1ef92a86 100644 --- a/src/box/sql/mem.c +++ b/src/box/sql/mem.c @@ -1293,88 +1293,6 @@ mem_cast_implicit(struct Mem *mem, enum field_type type) return -1; } -int -mem_cast_implicit_old(struct Mem *mem, enum field_type type) -{ - if (mem->type == MEM_TYPE_NULL) - return 0; - switch (type) { - case FIELD_TYPE_UNSIGNED: - if (mem->type == MEM_TYPE_UINT) - return 0; - if (mem->type == MEM_TYPE_DOUBLE) - return double_to_uint_precise(mem); - if (mem->type == MEM_TYPE_STR) - return str_to_uint(mem); - return -1; - case FIELD_TYPE_STRING: - if ((mem->type & (MEM_TYPE_STR | MEM_TYPE_BIN)) != 0) - return 0; - if ((mem->type & (MEM_TYPE_INT | MEM_TYPE_UINT)) != 0) - return int_to_str0(mem); - if (mem->type == MEM_TYPE_DOUBLE) - return double_to_str0(mem); - if (mem->type == MEM_TYPE_UUID) - return uuid_to_str0(mem); - return -1; - case FIELD_TYPE_DOUBLE: - if (mem->type == MEM_TYPE_DOUBLE) - return 0; - if ((mem->type & (MEM_TYPE_INT | MEM_TYPE_UINT)) != 0) - return int_to_double(mem); - if (mem->type == MEM_TYPE_STR) - return bin_to_str(mem); - return -1; - case FIELD_TYPE_INTEGER: - if ((mem->type & (MEM_TYPE_INT | MEM_TYPE_UINT)) != 0) - return 0; - if (mem->type == MEM_TYPE_STR) - return str_to_int(mem); - if (mem->type == MEM_TYPE_DOUBLE) - return double_to_int_precise(mem); - return -1; - case FIELD_TYPE_BOOLEAN: - if (mem->type == MEM_TYPE_BOOL) - return 0; - return -1; - case FIELD_TYPE_VARBINARY: - if (mem->type == MEM_TYPE_BIN) - return 0; - if (mem->type == MEM_TYPE_UUID) - return uuid_to_bin(mem); - return -1; - case FIELD_TYPE_NUMBER: - if (mem_is_num(mem)) - return 0; - if (mem->type == MEM_TYPE_STR) - return mem_to_number(mem); - return -1; - case FIELD_TYPE_MAP: - if (mem->type == MEM_TYPE_MAP) - return 0; - return -1; - case FIELD_TYPE_ARRAY: - if (mem->type == MEM_TYPE_ARRAY) - return 0; - return -1; - case FIELD_TYPE_SCALAR: - if ((mem->type & (MEM_TYPE_MAP | MEM_TYPE_ARRAY)) != 0) - return -1; - return 0; - case FIELD_TYPE_UUID: - if (mem->type == MEM_TYPE_UUID) - return 0; - if (mem->type == MEM_TYPE_STR) - return str_to_uuid(mem); - if (mem->type == MEM_TYPE_BIN) - return bin_to_uuid(mem); - return -1; - default: - break; - } - return -1; -} - int mem_cast_implicit_number(struct Mem *mem, enum field_type type) { diff --git a/src/box/sql/mem.h b/src/box/sql/mem.h index 4f61cbab0..9681fc736 100644 --- a/src/box/sql/mem.h +++ b/src/box/sql/mem.h @@ -740,12 +740,6 @@ mem_cast_explicit(struct Mem *mem, enum field_type type); int mem_cast_implicit(struct Mem *mem, enum field_type type); -/** - * Convert the given MEM to given type according to legacy implicit cast rules. - */ -int -mem_cast_implicit_old(struct Mem *mem, enum field_type type); - /** * Cast MEM with numeric value to given numeric type. Doesn't fail. The return * value is < 0 if the original value is less than the result, > 0 if the diff --git a/src/box/sql/vdbe.h b/src/box/sql/vdbe.h index 118f1cd83..be112c72d 100644 --- a/src/box/sql/vdbe.h +++ b/src/box/sql/vdbe.h @@ -266,7 +266,7 @@ sql *sqlVdbeDb(Vdbe *); void sqlVdbeSetSql(Vdbe *, const char *z, int n); void sqlVdbeSwap(Vdbe *, Vdbe *); VdbeOp *sqlVdbeTakeOpArray(Vdbe *, int *, int *); -sql_value *sqlVdbeGetBoundValue(Vdbe *, int, u8); +sql_value *sqlVdbeGetBoundValue(Vdbe *, int); char *sqlVdbeExpandSql(Vdbe *, const char *); /** diff --git a/src/box/sql/vdbeaux.c b/src/box/sql/vdbeaux.c index 4a1fdb637..61be7b489 100644 --- a/src/box/sql/vdbeaux.c +++ b/src/box/sql/vdbeaux.c @@ -2323,17 +2323,15 @@ sqlVdbeDb(Vdbe * v) * The returned value must be freed by the caller using sqlValueFree(). */ sql_value * -sqlVdbeGetBoundValue(Vdbe * v, int iVar, u8 aff) +sqlVdbeGetBoundValue(struct Vdbe *v, int iVar) { assert(iVar > 0); if (v) { Mem *pMem = &v->aVar[iVar - 1]; if (!mem_is_null(pMem)) { sql_value *pRet = sqlValueNew(v->db); - if (pRet) { + if (pRet != NULL) mem_copy(pRet, pMem); - mem_cast_implicit_old(pRet, aff); - } return pRet; } } diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c index fe7329ea8..6849f13ec 100644 --- a/src/box/sql/whereexpr.c +++ b/src/box/sql/whereexpr.c @@ -309,9 +309,7 @@ like_optimization_is_valid(Parse *pParse, Expr *pExpr, Expr **ppPrefix, if (op == TK_VARIABLE) { Vdbe *pReprepare = pParse->pReprepare; int iCol = pRight->iColumn; - pVal = - sqlVdbeGetBoundValue(pReprepare, iCol, - FIELD_TYPE_SCALAR); + pVal = sqlVdbeGetBoundValue(pReprepare, iCol); if (pVal != NULL && mem_is_str(pVal)) { if (mem_as_str0(pVal) == NULL) return -1;
prev parent reply other threads:[~2021-08-05 23:45 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-28 20:51 [Tarantool-patches] [PATCH v1 0/7] Rework implicit cast Mergen Imeev via Tarantool-patches 2021-07-28 20:51 ` [Tarantool-patches] [PATCH v1 1/7] sql: rework implicit cast fo assignment Mergen Imeev via Tarantool-patches 2021-07-30 21:55 ` Vladislav Shpilevoy via Tarantool-patches 2021-08-04 22:21 ` Vladislav Shpilevoy via Tarantool-patches 2021-08-05 23:27 ` Mergen Imeev via Tarantool-patches 2021-08-06 0:13 ` Vladislav Shpilevoy via Tarantool-patches 2021-07-28 20:51 ` [Tarantool-patches] [PATCH v1 2/7] sql: remove implicit cast from comparison opcodes Mergen Imeev via Tarantool-patches 2021-08-04 22:24 ` Vladislav Shpilevoy via Tarantool-patches 2021-08-05 23:33 ` Mergen Imeev via Tarantool-patches 2021-08-06 0:13 ` Vladislav Shpilevoy via Tarantool-patches 2021-07-28 20:51 ` [Tarantool-patches] [PATCH v1 3/7] sql: rework OP_Seek* opcodes Mergen Imeev via Tarantool-patches 2021-08-04 22:25 ` Vladislav Shpilevoy via Tarantool-patches 2021-08-05 23:40 ` Mergen Imeev via Tarantool-patches 2021-07-28 20:51 ` [Tarantool-patches] [PATCH v1 4/7] sql: remove unnecessary calls of OP_ApplyType Mergen Imeev via Tarantool-patches 2021-08-04 22:26 ` Vladislav Shpilevoy via Tarantool-patches 2021-08-05 23:41 ` Mergen Imeev via Tarantool-patches 2021-07-28 20:51 ` [Tarantool-patches] [PATCH v1 5/7] sql: remove implicit cast from OP_MakeRecord Mergen Imeev via Tarantool-patches 2021-08-04 22:27 ` Vladislav Shpilevoy via Tarantool-patches 2021-08-05 23:43 ` Mergen Imeev via Tarantool-patches 2021-08-06 0:13 ` Vladislav Shpilevoy via Tarantool-patches 2021-07-28 20:51 ` [Tarantool-patches] [PATCH v1 6/7] sql: remove implicit cast from OP_MustBeInt Mergen Imeev via Tarantool-patches 2021-08-05 23:47 ` Mergen Imeev via Tarantool-patches 2021-07-28 20:51 ` [Tarantool-patches] [PATCH v1 7/7] sql: remove unused MEM cast functions Mergen Imeev via Tarantool-patches 2021-08-04 22:27 ` Vladislav Shpilevoy via Tarantool-patches 2021-08-05 23:45 ` Mergen Imeev via Tarantool-patches [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=20210805234508.GF81912@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=imeevma@tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v1 7/7] sql: remove unused MEM cast functions' \ /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