From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng3.m.smailru.net (smtpng3.m.smailru.net [94.100.177.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 5D75F42EF5E for ; Thu, 25 Jun 2020 18:17:49 +0300 (MSK) From: imeevma@tarantool.org Date: Thu, 25 Jun 2020 18:17:48 +0300 Message-Id: <7036302de87521b8f6bc240f74bae3397ea64d75.1593096639.git.imeevma@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v3 7/8] sql: remove unused functions List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: korablev@tarantool.org, tsafin@tarantool.org, tarantool-patches@dev.tarantool.org After previous patches, some functions and the ApplyType opcode become unused, so this patch removes them. Follow-up #4230 --- src/box/sql/expr.c | 43 ----------------------------------------- src/box/sql/insert.c | 14 -------------- src/box/sql/sqlInt.h | 25 ------------------------ src/box/sql/vdbe.c | 29 --------------------------- src/box/sql/wherecode.c | 5 ----- 5 files changed, 116 deletions(-) diff --git a/src/box/sql/expr.c b/src/box/sql/expr.c index 745011d35..61ed89830 100644 --- a/src/box/sql/expr.c +++ b/src/box/sql/expr.c @@ -137,19 +137,6 @@ sql_expr_type(struct Expr *pExpr) return pExpr->type; } -enum field_type * -field_type_sequence_dup(struct Parse *parse, enum field_type *types, - uint32_t len) -{ - uint32_t sz = (len + 1) * sizeof(enum field_type); - enum field_type *ret_types = sqlDbMallocRaw(parse->db, sz); - if (ret_types == NULL) - return NULL; - memcpy(ret_types, types, sz); - ret_types[len] = field_type_MAX; - return ret_types; -} - /* * Set the collating sequence for expression pExpr to be the collating * sequence named by pToken. Return a pointer to a new Expr node that @@ -2246,36 +2233,6 @@ sqlExprCanBeNull(const Expr * p) } } -bool -sql_expr_needs_no_type_change(const struct Expr *p, enum field_type type) -{ - u8 op; - if (type == FIELD_TYPE_SCALAR) - return true; - while (p->op == TK_UPLUS || p->op == TK_UMINUS) { - p = p->pLeft; - } - op = p->op; - if (op == TK_REGISTER) - op = p->op2; - switch (op) { - case TK_INTEGER: - return type == FIELD_TYPE_INTEGER; - case TK_FLOAT: - return type == FIELD_TYPE_DOUBLE; - case TK_STRING: - return type == FIELD_TYPE_STRING; - case TK_BLOB: - return type == FIELD_TYPE_VARBINARY; - case TK_COLUMN: - /* p cannot be part of a CHECK constraint. */ - assert(p->iTable >= 0); - return p->iColumn < 0 && sql_type_is_numeric(type); - default: - return false; - } -} - /* * pX is the RHS of an IN operator. If pX is a SELECT statement * that can be simplified to a direct table access, then return diff --git a/src/box/sql/insert.c b/src/box/sql/insert.c index 8a89f9904..6639ceff0 100644 --- a/src/box/sql/insert.c +++ b/src/box/sql/insert.c @@ -41,20 +41,6 @@ #include "box/box.h" #include "box/schema.h" -enum field_type * -sql_index_type_str(struct sql *db, const struct index_def *idx_def) -{ - uint32_t column_count = idx_def->key_def->part_count; - uint32_t sz = (column_count + 1) * sizeof(enum field_type); - enum field_type *types = (enum field_type *) sqlDbMallocRaw(db, sz); - if (types == NULL) - return NULL; - for (uint32_t i = 0; i < column_count; i++) - types[i] = idx_def->key_def->parts[i].type; - types[column_count] = field_type_MAX; - return types; -} - void sql_emit_table_types(struct Vdbe *v, struct space_def *def, int reg) { diff --git a/src/box/sql/sqlInt.h b/src/box/sql/sqlInt.h index f1d0345f9..59c62ebf9 100644 --- a/src/box/sql/sqlInt.h +++ b/src/box/sql/sqlInt.h @@ -3238,19 +3238,6 @@ int sqlExprIsTableConstant(Expr *, int); int sqlExprIsInteger(Expr *, int *); int sqlExprCanBeNull(const Expr *); -/** - * Return TRUE if the given expression is a constant which would - * be unchanged by OP_ApplyType with the type given in the second - * argument. - * - * This routine is used to determine if the OP_ApplyType operation - * can be omitted. When in doubt return FALSE. A false negative - * is harmless. A false positive, however, can result in the wrong - * answer. - */ -bool -sql_expr_needs_no_type_change(const struct Expr *expr, enum field_type type); - /** * This routine generates VDBE code that causes a single row of a * single table to be deleted. Both the original table entry and @@ -3875,10 +3862,6 @@ int sqlVarintLen(u64 v); #define getVarint sqlGetVarint #define putVarint sqlPutVarint -/** Return string consisting of fields types of given index. */ -enum field_type * -sql_index_type_str(struct sql *db, const struct index_def *idx_def); - /** * Code an OP_ApplyType opcode that will force types * for given range of register starting from @reg. @@ -3920,14 +3903,6 @@ expr_cmp_mutual_type(struct Expr *pExpr); enum field_type sql_expr_type(struct Expr *pExpr); -/** - * This function duplicates first @len entries of types array - * and terminates new array with field_type_MAX member. - */ -enum field_type * -field_type_sequence_dup(struct Parse *parse, enum field_type *types, - uint32_t len); - /** * Convert z to a 64-bit signed or unsigned integer. * z must be decimal. This routine does *not* accept diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c index f531a2241..cabe5aa9e 100644 --- a/src/box/sql/vdbe.c +++ b/src/box/sql/vdbe.c @@ -2857,35 +2857,6 @@ case OP_Fetch: { break; } -/* Opcode: ApplyType P1 P2 * P4 * - * Synopsis: type(r[P1@P2]) - * - * Apply types to a range of P2 registers starting with P1. - * - * P4 is a string that is P2 characters long. The nth character of the - * string indicates the column type that should be used for the nth - * memory cell in the range. - */ -case OP_ApplyType: { - enum field_type *types = pOp->p4.types; - assert(types != NULL); - assert(types[pOp->p2] == field_type_MAX); - pIn1 = &aMem[pOp->p1]; - enum field_type type; - while((type = *(types++)) != field_type_MAX) { - assert(pIn1 <= &p->aMem[(p->nMem+1 - p->nCursor)]); - assert(memIsValid(pIn1)); - if (mem_apply_type(pIn1, type) != 0) { - diag_set(ClientError, ER_SQL_TYPE_MISMATCH, - sql_value_to_diag_str(pIn1), - field_type_strs[type]); - goto abort_due_to_error; - } - pIn1++; - } - break; -} - /* Opcode: CheckType P1 P2 * P4 * * Synopsis: type(r[P1@P2]) * diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c index 1d7c76670..2459054ff 100644 --- a/src/box/sql/wherecode.c +++ b/src/box/sql/wherecode.c @@ -568,11 +568,6 @@ codeEqualityTerm(Parse * pParse, /* The parsing context */ * key value of the loop. If one or more IN operators appear, then * this routine allocates an additional nEq memory cells for internal * use. - * - * Before returning, @types is set to point to a buffer containing a - * copy of the column types array of the index allocated using - * sqlDbMalloc(). This array is passed to OP_ApplyType to provide - * correct implicit conversions. */ static int codeAllEqualityTerms(Parse * pParse, /* Parsing context */ -- 2.25.1