[tarantool-patches] Re: [PATCH 2/2] sql: statistics removal after dropping an index

  • From: Hollow111 <hollow653@xxxxxxxxx>
  • To: korablev@xxxxxxxxxxxxx
  • Date: Sun, 15 Apr 2018 06:09:19 +0000

Hello. Changes have been made.
Diff:

diff --git a/src/box/sql/build.c b/src/box/sql/build.c
index 92f3cb6..ce5878c 100644
--- a/src/box/sql/build.c
+++ b/src/box/sql/build.c
@@ -2129,18 +2129,32 @@ sqliteViewResetAll(sqlite3 * db)
  * Remove entries from the _sql_stat1 and _sql_stat4
  * system spaces after a DROP INDEX or DROP TABLE command.
  *
- * @param pParse Parsing context.
- * @param zType Type of entry to be deleted:
- * 'idx' or 'tbl' string literal.
- * @param zName Name of index or table.
+ * @param parse      The parsing context.
+ * @param table_name The table to be dropped or
+ *                   the table that contains index to be dropped.
+ * @param idx_name   Index to be dropped.
  */
 static void
-sql_clear_stat_spaces(Parse * pParse, const char *zType, const char *zName)
+sql_clear_stat_spaces(Parse *parse, const char *table_name,
+       const char *idx_name)
 {
- sqlite3NestedParse(pParse, "DELETE FROM \"_sql_stat1\" WHERE \"%s\"=%Q",
-    zType, zName);
- sqlite3NestedParse(pParse, "DELETE FROM \"_sql_stat4\" WHERE \"%s\"=%Q",
-    zType, zName);
+ if (idx_name != NULL) {
+ sqlite3NestedParse(parse,
+    "DELETE FROM \"_sql_stat1\" WHERE (\"idx\"=%Q AND "
+    "\"tbl\"=%Q)",
+    idx_name, table_name);
+ sqlite3NestedParse(parse,
+    "DELETE FROM \"_sql_stat4\" WHERE (\"idx\"=%Q AND "
+    "\"tbl\"=%Q)",
+    idx_name, table_name);
+ } else {
+ sqlite3NestedParse(parse,
+    "DELETE FROM \"_sql_stat1\" WHERE \"tbl\"=%Q",
+    table_name);
+ sqlite3NestedParse(parse,
+    "DELETE FROM \"_sql_stat4\" WHERE \"tbl\"=%Q",
+    table_name);
+ }
 }

 /**
@@ -2325,7 +2339,7 @@ sql_drop_table(struct Parse *parse_context, struct
SrcList *table_name_list,
  *    tuple with corresponding space_id from _space.
  */

- sql_clear_stat_spaces(parse_context, "tbl", space_name);
+ sql_clear_stat_spaces(parse_context, space_name, NULL);
  struct Table *tab = sqlite3HashFind(&db->pSchema->tblHash, space_name);
  sqlite3FkDropTable(parse_context, table_name_list, tab);
  sql_code_drop_table(parse_context, space, is_view);
@@ -3328,7 +3342,7 @@ sql_drop_index(struct Parse *parse_context, struct
SrcList *index_name_list,
  * But firstly, delete statistics since schema
  * changes after DDL.
  */
- sql_clear_stat_spaces(parse_context, "idx", index->def->name);
+ sql_clear_stat_spaces(parse_context, table_name, index->def->name);
  int record_reg = ++parse_context->nMem;
  int space_id_reg = ++parse_context->nMem;
  sqlite3VdbeAddOp2(v, OP_Integer, space_id, space_id_reg);


сб, 14 апр. 2018 г. в 11:13, n.pettik <korablev@xxxxxxxxxxxxx>:


On 14 Apr 2018, at 07:29, Hollow111 <hollow653@xxxxxxxxx> wrote:

Hello. I'd like to ask about 'one kind of corrections”.



Arguments which you carry to the next line, should start right below
previous:

void f(x int, ….
          y char, ….
          z double …);


I couldnt find this in  "C style guide" (
https://tarantool.io/en/doc/2.0/dev_guide/c_style_guide.html)
Moreover according to this guide:
"Outside of comments, documentation and except in Kconfig, spaces are
never used for indentation...".
Which means we're supposed to violate this rule


In fact, they are used. Probably, we should update and clarify this point
in docs.
You use tabs as much as possible. To precisely align argument lists, you
have
to use spaces:

return_value very_long_function_name_bla_bla_bla(int first_argument,
int second_argument)

To make ’second_argument’ be under first, you should use 8 tabs + 1 space.
Overall, you can inspect other source files from box/ to understand how
source files should be formatted. Also, I advise you to make spaces and
tabs visible.
For instance, see how it was done in box/space.c 106 : space_create()

in case first argument is positioned not on the same range
from left corner of screen as any amount of 8-character tabs.
Maybe I'm wrong at smth but I'd like to have an explanation.



Other related posts: