Tarantool development patches archive
 help / color / mirror / Atom feed
From: Mergen Imeev via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: v.shpilevoy@tarantool.org, tsafin@tarantool.org
Cc: tarantool-patches@dev.tarantool.org
Subject: [Tarantool-patches] [PATCH v5 02/52] sql: disable unused code in sql/analyze.c
Date: Fri,  9 Apr 2021 19:51:30 +0300	[thread overview]
Message-ID: <5b13ff9c8a9ba5127e6660af564bc03632a63ded.1617984948.git.imeevma@gmail.com> (raw)
In-Reply-To: <cover.1617984948.git.imeevma@gmail.com>

This patch disables unused code in sql/analyze.c. It will simplify
refactoring.

Needed for #5818
---
 src/box/sql.c         | 95 +++++++++++++++++++++++++++++++++++--------
 src/box/sql.h         |  8 ----
 src/box/sql/analyze.c | 81 ++----------------------------------
 src/box/sql/vdbe.c    |  3 ++
 4 files changed, 84 insertions(+), 103 deletions(-)

diff --git a/src/box/sql.c b/src/box/sql.c
index 3b53abcdb..aa91f003f 100644
--- a/src/box/sql.c
+++ b/src/box/sql.c
@@ -78,24 +78,6 @@ sql_init(void)
 	assert(db != NULL);
 }
 
-void
-sql_load_schema(void)
-{
-	assert(db->init.busy == 0);
-	struct space *stat = space_by_name("_sql_stat1");
-	assert(stat != NULL);
-	if (stat->def->field_count == 0)
-		return;
-	db->init.busy = 1;
-	if (sql_analysis_load(db) != 0) {
-		if(!diag_is_empty(&fiber()->diag)) {
-			diag_log();
-		}
-		panic("failed to initialize SQL subsystem");
-	}
-	db->init.busy = 0;
-}
-
 sql *
 sql_get(void)
 {
@@ -1317,3 +1299,80 @@ vdbe_field_ref_prepare_tuple(struct vdbe_field_ref *field_ref,
 	vdbe_field_ref_create(field_ref, tuple, tuple_data(tuple),
 			      tuple->bsize);
 }
+
+ssize_t
+sql_index_tuple_size(struct space *space, struct index *idx)
+{
+	assert(space != NULL);
+	assert(idx != NULL);
+	assert(idx->def->space_id == space->def->id);
+	ssize_t tuple_count = index_size(idx);
+	ssize_t space_size = space_bsize(space);
+	ssize_t avg_tuple_size = tuple_count != 0 ?
+				 (space_size / tuple_count) : 0;
+	return avg_tuple_size;
+}
+
+/**
+ * default_tuple_est[] array contains default information
+ * which is used when we don't have real space, e.g. temporary
+ * objects representing result set of nested SELECT or VIEW.
+ *
+ * First number is supposed to contain the number of elements
+ * in the index. Since we do not know, guess 1 million.
+ * Second one is an estimate of the number of rows in the
+ * table that match any particular value of the first column of
+ * the index. Third one is an estimate of the number of
+ * rows that match any particular combination of the first 2
+ * columns of the index. And so on. It must always be true:
+ *
+ *           default_tuple_est[N] <= default_tuple_est[N-1]
+ *           default_tuple_est[N] >= 1
+ *
+ * Apart from that, we have little to go on besides intuition
+ * as to how default values should be initialized. The numbers
+ * generated here are based on typical values found in actual
+ * indices.
+ */
+const log_est_t default_tuple_est[] = {DEFAULT_TUPLE_LOG_COUNT,
+/**                  [10*log_{2}(x)]:  10, 9,  8,  7,  6,  5 */
+				       33, 32, 30, 28, 26, 23};
+
+LogEst
+sql_space_tuple_log_count(struct space *space)
+{
+	if (space == NULL || space->index_map == NULL)
+		return 0;
+
+	struct index *pk = space_index(space, 0);
+	assert(sqlLogEst(DEFAULT_TUPLE_COUNT) == DEFAULT_TUPLE_LOG_COUNT);
+	/* If space represents VIEW, return default number. */
+	if (pk == NULL)
+		return DEFAULT_TUPLE_LOG_COUNT;
+	return sqlLogEst(pk->vtab->size(pk));
+}
+
+log_est_t
+index_field_tuple_est(const struct index_def *idx_def, uint32_t field)
+{
+	assert(idx_def != NULL);
+	struct space *space = space_by_id(idx_def->space_id);
+	if (space == NULL || strcmp(idx_def->name, "fake_autoindex") == 0)
+		return idx_def->opts.stat->tuple_log_est[field];
+	assert(field <= idx_def->key_def->part_count);
+	/* Statistics is held only in real indexes. */
+	struct index *tnt_idx = space_index(space, idx_def->iid);
+	assert(tnt_idx != NULL);
+	if (tnt_idx->def->opts.stat == NULL) {
+		/*
+		 * Last number for unique index is always 0:
+		 * only one tuple exists with given full key
+		 * in unique index and log(1) == 0.
+		 */
+		if (field == idx_def->key_def->part_count &&
+		    idx_def->opts.is_unique)
+			return 0;
+		return default_tuple_est[field + 1 >= 6 ? 6 : field];
+	}
+	return tnt_idx->def->opts.stat->tuple_log_est[field];
+}
diff --git a/src/box/sql.h b/src/box/sql.h
index f56f7a1f1..4c364306c 100644
--- a/src/box/sql.h
+++ b/src/box/sql.h
@@ -41,14 +41,6 @@ extern "C" {
 void
 sql_init(void);
 
-/**
- * Initialize SQL statistic system.
- *
- * Currently unused.
- */
-void
-sql_load_schema(void);
-
 /**
  * struct sql *
  * sql_get();
diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c
index f74f9b358..a015f70cb 100644
--- a/src/box/sql/analyze.c
+++ b/src/box/sql/analyze.c
@@ -116,6 +116,8 @@
 #include "tarantoolInt.h"
 #include "vdbeInt.h"
 
+#if 0
+
 /**
  * This routine generates code that opens the sql_stat1/4 tables.
  * If the sql_statN tables do not previously exist, they are
@@ -1114,19 +1116,6 @@ sqlAnalyze(Parse * pParse, Token * pName)
 		sqlVdbeAddOp0(v, OP_Expire);
 }
 
-ssize_t
-sql_index_tuple_size(struct space *space, struct index *idx)
-{
-	assert(space != NULL);
-	assert(idx != NULL);
-	assert(idx->def->space_id == space->def->id);
-	ssize_t tuple_count = index_size(idx);
-	ssize_t space_size = space_bsize(space);
-	ssize_t avg_tuple_size = tuple_count != 0 ?
-				 (space_size / tuple_count) : 0;
-	return avg_tuple_size;
-}
-
 /**
  * Used to pass information from the analyzer reader through
  * to the callback routine.
@@ -1538,70 +1527,6 @@ load_stat_to_index(const char *sql_select_load, struct index_stat **stats)
 	return 0;
 }
 
-/**
- * default_tuple_est[] array contains default information
- * which is used when we don't have real space, e.g. temporary
- * objects representing result set of nested SELECT or VIEW.
- *
- * First number is supposed to contain the number of elements
- * in the index. Since we do not know, guess 1 million.
- * Second one is an estimate of the number of rows in the
- * table that match any particular value of the first column of
- * the index. Third one is an estimate of the number of
- * rows that match any particular combination of the first 2
- * columns of the index. And so on. It must always be true:
- *
- *           default_tuple_est[N] <= default_tuple_est[N-1]
- *           default_tuple_est[N] >= 1
- *
- * Apart from that, we have little to go on besides intuition
- * as to how default values should be initialized. The numbers
- * generated here are based on typical values found in actual
- * indices.
- */
-const log_est_t default_tuple_est[] = {DEFAULT_TUPLE_LOG_COUNT,
-/**                  [10*log_{2}(x)]:  10, 9,  8,  7,  6,  5 */
-				       33, 32, 30, 28, 26, 23};
-
-LogEst
-sql_space_tuple_log_count(struct space *space)
-{
-	if (space == NULL || space->index_map == NULL)
-		return 0;
-
-	struct index *pk = space_index(space, 0);
-	assert(sqlLogEst(DEFAULT_TUPLE_COUNT) == DEFAULT_TUPLE_LOG_COUNT);
-	/* If space represents VIEW, return default number. */
-	if (pk == NULL)
-		return DEFAULT_TUPLE_LOG_COUNT;
-	return sqlLogEst(pk->vtab->size(pk));
-}
-
-log_est_t
-index_field_tuple_est(const struct index_def *idx_def, uint32_t field)
-{
-	assert(idx_def != NULL);
-	struct space *space = space_by_id(idx_def->space_id);
-	if (space == NULL || strcmp(idx_def->name, "fake_autoindex") == 0)
-		return idx_def->opts.stat->tuple_log_est[field];
-	assert(field <= idx_def->key_def->part_count);
-	/* Statistics is held only in real indexes. */
-	struct index *tnt_idx = space_index(space, idx_def->iid);
-	assert(tnt_idx != NULL);
-	if (tnt_idx->def->opts.stat == NULL) {
-		/*
-		 * Last number for unique index is always 0:
-		 * only one tuple exists with given full key
-		 * in unique index and log(1) == 0.
-		 */
-		if (field == idx_def->key_def->part_count &&
-		    idx_def->opts.is_unique)
-			return 0;
-		return default_tuple_est[field + 1 >= 6 ? 6 : field];
-	}
-	return tnt_idx->def->opts.stat->tuple_log_est[field];
-}
-
 /**
  * This function performs copy of statistics.
  * In contrast to index_stat_dup(), there is no assumption
@@ -1744,3 +1669,5 @@ fail:
 	box_txn_rollback();
 	return -1;
 }
+
+#endif
diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c
index 9a4f38bb9..4c1cd582b 100644
--- a/src/box/sql/vdbe.c
+++ b/src/box/sql/vdbe.c
@@ -4825,8 +4825,11 @@ case OP_RenameTable: {
  */
 case OP_LoadAnalysis: {
 	assert(pOp->p1==0 );
+	/* TODO: Enable analysis. */
+	/*
 	if (sql_analysis_load(db) != 0)
 		goto abort_due_to_error;
+	*/
 	break;
 }
 
-- 
2.25.1


  parent reply	other threads:[~2021-04-09 16:52 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-09 16:51 [Tarantool-patches] [PATCH v5 00/52] Move mem-related functions to mem.c/mem.h Mergen Imeev via Tarantool-patches
2021-04-09 16:51 ` [Tarantool-patches] [PATCH v5 01/52] sql: enhance vdbe_decode_msgpack_into_mem() Mergen Imeev via Tarantool-patches
2021-04-11 17:42   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 12:01     ` Mergen Imeev via Tarantool-patches
2021-04-13 12:12       ` Mergen Imeev via Tarantool-patches
2021-04-13 23:22       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 23:34         ` Mergen Imeev via Tarantool-patches
2021-04-09 16:51 ` Mergen Imeev via Tarantool-patches [this message]
2021-04-09 16:51 ` [Tarantool-patches] [PATCH v5 03/52] sql: disable unused code in sql/legacy.c Mergen Imeev via Tarantool-patches
2021-04-09 16:51 ` [Tarantool-patches] [PATCH v5 04/52] sql: remove NULL-termination in OP_ResultRow Mergen Imeev via Tarantool-patches
2021-04-14 22:23   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-14 22:37     ` Mergen Imeev via Tarantool-patches
2021-04-09 16:51 ` [Tarantool-patches] [PATCH v5 05/52] sql: move MEM-related functions to mem.c/mem.h Mergen Imeev via Tarantool-patches
2021-04-09 16:59 ` [Tarantool-patches] [PATCH v5 06/52] sql: refactor port_vdbemem_*() functions Mergen Imeev via Tarantool-patches
2021-04-09 16:59 ` [Tarantool-patches] [PATCH v5 07/52] sql: remove unused MEM-related functions Mergen Imeev via Tarantool-patches
2021-04-09 16:59 ` [Tarantool-patches] [PATCH v5 08/52] sql: disable unused code in sql/vdbemem.c Mergen Imeev via Tarantool-patches
2021-04-09 16:59 ` [Tarantool-patches] [PATCH v5 09/52] sql: introduce mem_str() Mergen Imeev via Tarantool-patches
2021-04-11 17:44   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 12:36     ` Mergen Imeev via Tarantool-patches
2021-04-14 22:23       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-14 22:42         ` Mergen Imeev via Tarantool-patches
2021-04-09 16:59 ` [Tarantool-patches] [PATCH v5 10/52] sql: introduce mem_create() Mergen Imeev via Tarantool-patches
2021-04-09 17:36 ` [Tarantool-patches] [PATCH v5 11/52] sql: introduce mem_destroy() Mergen Imeev via Tarantool-patches
2021-04-11 17:46   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 12:42     ` Mergen Imeev via Tarantool-patches
2021-04-09 17:36 ` [Tarantool-patches] [PATCH v5 12/52] sql: introduce mem_is_*() functions() Mergen Imeev via Tarantool-patches
2021-04-11 17:59   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 16:09     ` Mergen Imeev via Tarantool-patches
2021-04-14 22:48       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-14 23:07         ` Mergen Imeev via Tarantool-patches
2021-04-09 17:36 ` [Tarantool-patches] [PATCH v5 13/52] sql: introduce mem_copy() Mergen Imeev via Tarantool-patches
2021-04-11 18:06   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 16:18     ` Mergen Imeev via Tarantool-patches
2021-04-09 17:36 ` [Tarantool-patches] [PATCH v5 14/52] sql: introduce mem_copy_as_ephemeral() Mergen Imeev via Tarantool-patches
2021-04-11 18:10   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 16:31     ` Mergen Imeev via Tarantool-patches
2021-04-09 17:37 ` [Tarantool-patches] [PATCH v5 15/52] sql: rework mem_move() Mergen Imeev via Tarantool-patches
2021-04-11 18:10   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 16:38     ` Mergen Imeev via Tarantool-patches
2021-04-09 17:57 ` [Tarantool-patches] [PATCH v5 16/52] sql: rework vdbe_decode_msgpack_into_mem() Mergen Imeev via Tarantool-patches
2021-04-09 17:57 ` [Tarantool-patches] [PATCH v5 17/52] sql: remove sql_column_to_messagepack() Mergen Imeev via Tarantool-patches
2021-04-14 22:58   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-14 23:14     ` Mergen Imeev via Tarantool-patches
2021-04-09 17:57 ` [Tarantool-patches] [PATCH v5 18/52] sql: introduce mem_concat() Mergen Imeev via Tarantool-patches
2021-04-11 18:11   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 16:57     ` Mergen Imeev via Tarantool-patches
2021-04-14 23:04       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-14 23:22         ` Mergen Imeev via Tarantool-patches
2021-04-09 17:57 ` [Tarantool-patches] [PATCH v5 19/52] sql: introduce arithmetic operations for MEM Mergen Imeev via Tarantool-patches
2021-04-11 18:13   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 17:06     ` Mergen Imeev via Tarantool-patches
2021-04-14 23:10       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-14 23:33         ` Mergen Imeev via Tarantool-patches
2021-04-09 17:57 ` [Tarantool-patches] [PATCH v5 20/52] sql: introduce mem_compare() Mergen Imeev via Tarantool-patches
2021-04-11 18:16   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 18:33     ` Mergen Imeev via Tarantool-patches
2021-04-14 23:20       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-14 23:40         ` Mergen Imeev via Tarantool-patches
2021-04-09 18:11 ` [Tarantool-patches] [PATCH v5 21/52] sql: introduce bitwise operations for MEM Mergen Imeev via Tarantool-patches
2021-04-12 23:31   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 20:49     ` Mergen Imeev via Tarantool-patches
2021-04-09 18:11 ` [Tarantool-patches] [PATCH v5 22/52] sql: Initialize MEM in sqlVdbeAllocUnpackedRecord() Mergen Imeev via Tarantool-patches
2021-04-09 18:11 ` [Tarantool-patches] [PATCH v5 23/52] sql: introduce mem_set_null() Mergen Imeev via Tarantool-patches
2021-04-09 18:11 ` [Tarantool-patches] [PATCH v5 24/52] sql: introduce mem_set_int() Mergen Imeev via Tarantool-patches
2021-04-12 23:32   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 20:56     ` Mergen Imeev via Tarantool-patches
2021-04-09 18:11 ` [Tarantool-patches] [PATCH v5 25/52] sql: introduce mem_set_uint() Mergen Imeev via Tarantool-patches
2021-04-09 19:45 ` [Tarantool-patches] [PATCH v5 26/52] sql: move mem_set_bool() and mem_set_double() Mergen Imeev via Tarantool-patches
2021-04-09 19:45 ` [Tarantool-patches] [PATCH v5 27/52] sql: introduce mem_set_str_*() functions Mergen Imeev via Tarantool-patches
2021-04-12 23:34   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 21:36     ` Mergen Imeev via Tarantool-patches
2021-04-14 23:49       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-15  1:25         ` Mergen Imeev via Tarantool-patches
2021-04-09 19:45 ` [Tarantool-patches] [PATCH v5 28/52] sql: introduce mem_copy_str() and mem_copy_str0() Mergen Imeev via Tarantool-patches
2021-04-12 23:35   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 22:00     ` Mergen Imeev via Tarantool-patches
2021-04-14 23:54       ` Vladislav Shpilevoy via Tarantool-patches
2021-04-15  0:30         ` Mergen Imeev via Tarantool-patches
2021-04-09 19:45 ` [Tarantool-patches] [PATCH v5 29/52] sql: introduce mem_set_bin_*() functions Mergen Imeev via Tarantool-patches
2021-04-09 19:45 ` [Tarantool-patches] [PATCH v5 30/52] sql: introduce mem_copy_bin() Mergen Imeev via Tarantool-patches
2021-04-12 23:36   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 22:06     ` Mergen Imeev via Tarantool-patches
2021-04-09 20:05 ` [Tarantool-patches] [PATCH v5 31/52] sql: introduce mem_set_zerobin() Mergen Imeev via Tarantool-patches
2021-04-09 20:05 ` [Tarantool-patches] [PATCH v5 32/52] sql: introduce mem_set_*() for map and array Mergen Imeev via Tarantool-patches
2021-04-12 23:36   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 22:08     ` Mergen Imeev via Tarantool-patches
2021-04-09 20:05 ` [Tarantool-patches] [PATCH v5 33/52] sql: introduce mem_set_invalid() Mergen Imeev via Tarantool-patches
2021-04-09 20:05 ` [Tarantool-patches] [PATCH v5 34/52] sql: refactor mem_set_ptr() Mergen Imeev via Tarantool-patches
2021-04-09 20:05 ` [Tarantool-patches] [PATCH v5 35/52] sql: introduce mem_set_frame() Mergen Imeev via Tarantool-patches
2021-04-12 23:37   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 22:19     ` Mergen Imeev via Tarantool-patches
2021-04-09 20:25 ` [Tarantool-patches] [PATCH v5 36/52] sql: introduce mem_set_agg() Mergen Imeev via Tarantool-patches
2021-04-12 23:37   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 22:46     ` Mergen Imeev via Tarantool-patches
2021-04-09 20:25 ` [Tarantool-patches] [PATCH v5 37/52] sql: introduce mem_set_null_clear() Mergen Imeev via Tarantool-patches
2021-04-12 23:38   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 22:50     ` Mergen Imeev via Tarantool-patches
2021-04-09 20:25 ` [Tarantool-patches] [PATCH v5 38/52] sql: move MEM flags to mem.c Mergen Imeev via Tarantool-patches
2021-04-13 20:42   ` Mergen Imeev via Tarantool-patches
2021-04-09 20:25 ` [Tarantool-patches] [PATCH v5 39/52] sql: introduce mem_to_int*() functions Mergen Imeev via Tarantool-patches
2021-04-12 23:39   ` Vladislav Shpilevoy via Tarantool-patches
2021-04-13 22:58     ` Mergen Imeev via Tarantool-patches
2021-04-13 23:10       ` Mergen Imeev via Tarantool-patches
2021-04-09 20:26 ` [Tarantool-patches] [PATCH v5 40/52] sql: introduce mem_to_double() Mergen Imeev via Tarantool-patches
2021-04-13 23:21   ` Mergen Imeev via Tarantool-patches
2021-04-15  0:39 ` [Tarantool-patches] [PATCH v5 00/52] Move mem-related functions to mem.c/mem.h Vladislav Shpilevoy via Tarantool-patches
2021-04-15  6:49 ` Kirill Yukhin via Tarantool-patches

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=5b13ff9c8a9ba5127e6660af564bc03632a63ded.1617984948.git.imeevma@gmail.com \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=imeevma@tarantool.org \
    --cc=tsafin@tarantool.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v5 02/52] sql: disable unused code in sql/analyze.c' \
    /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