Tarantool development patches archive
 help / color / mirror / Atom feed
From: Kirill Shcherbatov <kshcherbatov@tarantool.org>
To: tarantool-patches@freelists.org
Subject: [tarantool-patches] Re: [PATCH v5 2/3] sql: remove SQL fields from Table and Column
Date: Tue, 15 May 2018 18:56:03 +0300	[thread overview]
Message-ID: <6f7cfd9a-422b-2cf3-11a1-1ef567aead9a@tarantool.org> (raw)
In-Reply-To: <f3eda3b5-5f77-42be-1853-6730faed1b95@tarantool.org>

> 1. Wrong fix. As I can see sql_table_def_rebuild does not depend on allocation
> way of its arguments. So the function declaration comment must be fixed too.@@ -166,8 +166,7 @@ sql_ephemeral_space_def_new(struct Parse *parser, const char *name);
 
 /**
  * Rebuild struct def in Table with memory allocated on a single
- * malloc. Fields and strings are expected to be allocated with
- * sqlite3DbMalloc.
+ * malloc.

> 2. OutOfMemory takes variable name in the last argument. Not caller function name.
> 3. Same.
@@ -661,7 +661,7 @@ sqlite3AddColumn(Parse * pParse, Token * pName, Token * pType)
                diag_set(OutOfMemory, pName->n + 1,
-                        "region_alloc", "sqlite3AddColumn");
+                        "region_alloc", "z");
                pParse->rc = SQL_TARANTOOL_ERROR;
                pParse->nErr++;
                return;
@@ -871,7 +871,7 @@ sqlite3AddDefaultValue(Parse * pParse, ExprSpan * pSpan)
                                diag_set(OutOfMemory, default_length + 1,
                                         "region_alloc",
-                                        "sqlite3AddDefaultValue");
+                                        "field->default_value");

> 4. Looks like you removed sql_column_collation. It would be good to see the diff
> under the comment.
@@ -1053,45 +1030,13 @@ sqlite3AddCollateType(Parse * pParse, Token * pToken)
-                       if (pIdx->aiColumn[0] == i)
-                               pIdx->coll_array[0] = sql_column_collation(p, i);
+                       if (pIdx->aiColumn[0] == i) {
+                               pIdx->coll_array[0] =
+                                       coll_by_id(p->def->fields[i].coll_id);
+                       }
                }

@@ -3066,7 +3074,7 @@ sqlite3CreateIndex(Parse * pParse,        /* All information about this parse */
-                       coll = sql_column_collation(pTab, j);
+                       coll = coll_by_id(pTab->def->fields[j].coll_id);

@@ -179,13 +182,14 @@ sql_expr_coll(Parse *parse, Expr *p, bool *is_found)
-                               coll = sql_column_collation(p->pTab, j);
+                               coll = coll_by_id(
+                                       p->space_def->fields[j].coll_id);


@@ -298,14 +299,14 @@ sqlite3FkLocateIndex(Parse * pParse,      /* Parse context to store any error in */
-                                       def_coll = sql_column_collation(pParent,
-                                                                       iCol);
+                                       def_coll = coll_by_id(
+                                               pParent->def->fields[iCol].coll_id);

@@ -298,14 +299,14 @@ sqlite3FkLocateIndex(Parse * pParse,      /* Parse context to store any error in */
-                                       def_coll = sql_column_collation(pParent,
-                                                                       iCol);
+                                       def_coll = coll_by_id(
+                                               pParent->def->fields[iCol].coll_id);

@@ -1784,26 +1795,29 @@ xferOptimization(Parse * pParse,        /* Parser context */
-               if (sql_column_collation(pDest, i) !=
-                   sql_column_collation(pSrc, i)) {
+               if (coll_by_id(pDest->def->fields[i].coll_id) !=
+                       coll_by_id(pSrc->def->fields[i].coll_id))

@@ -3529,8 +3499,6 @@ void sqlite3AddCollateType(Parse *, Token *);
-struct coll *
-sql_column_collation(Table *, uint32_t);

> 5. Out of 80 symbols. Please, do self-review of a patch before sending.
@@ -2110,7 +2110,8 @@ sqlite3ViewGetColumnNames(Parse * pParse, Table * pTable)
-                       sqlite3ColumnsFromExprList(pParse, pTable->pCheck, pTable);
+                       sqlite3ColumnsFromExprList(pParse, pTable->pCheck,
+                                                  pTable);

> 6. I looked at sqlite3ColumnsFromExprList, and looks like it does not use
> opts.temporary flag. So you can remove this opts.temporary flag manipulation, it is not?
@@ -1742,7 +1742,6 @@ sql_ephemeral_table_new(Parse *parser, const char *name)
 int
 sql_table_def_rebuild(struct sqlite3 *db, struct Table *pTable)
 {
-       assert(pTable->def->opts.temporary);
        struct space_def *old_def = pTable->def;

@@ -2108,12 +2108,9 @@ sqlite3ViewGetColumnNames(Parse * pParse, Table * pTable)
                         * a VIEW it holds the list of column names.
                         */
                        struct space_def *old_def = pTable->def;
-                       /* Manage def memory manually. */
-                       old_def->opts.temporary = true;
                        sqlite3ColumnsFromExprList(pParse, pTable->pCheck,
                                                   pTable);
                        if (sql_table_def_rebuild(db, pTable) != 0) {
-                               old_def->opts.temporary = false;


> 
> Here I meant this:
@@ -2131,8 +2131,7 @@ sqlite3ViewGetColumnNames(Parse * pParse, Table * pTable)
-                       struct space_def *new_def;
-                       new_def =
+                       struct space_def *new_def =
                                sql_ephemeral_space_def_new(pParse,


> 7. Apply this:
@@ -2969,10 +2968,9 @@ sqlite3CreateIndex(Parse * pParse,       /* All information about this parse */
         */
        if (pList == 0) {
                Token prevCol;
-               sqlite3TokenInit(&prevCol,
-                                pTab->def->fields[
-                                                  pTab->def->field_count - 1].
-                                                  name);
+               struct field_def *field =
+                       &pTab->def->fields[pTab->def->field_count - 1];
+               sqlite3TokenInit(&prevCol, field->name);


> 8. When you added cleanup label, you can reuse it for another OOM on line 1904.
@@ -1842,7 +1842,7 @@ sqlite3ColumnsFromExprList(Parse * pParse,        /* Parsing context */
-       for (i = 0, pCol = aCol; i < nCol && !db->mallocFailed; i++, pCol++) {
+       for (i = 0, pCol = aCol; i < nCol; i++, pCol++) {

@@ -1902,6 +1902,7 @@ sqlite3ColumnsFromExprList(Parse * pParse,        /* Parsing context */
                if (pTable->def->fields[i].name == NULL) {
                        sqlite3OomFault(db);
+                       goto cleanup;
                } else {

> 9. Please, do not ignore comments.
> Looks like it can be on malloc sometimes, so you should write a comment about it -
> why do you need this cleaning.

@@ -1912,6 +1912,10 @@ cleanup:
        sqlite3HashClear(&ht);
        int rc = db->mallocFailed ? SQLITE_NOMEM_BKPT : SQLITE_OK;
        if (rc != SQLITE_OK) {
+               /*
+                * pTable->def could be not temporal in
+                * sqlite3ViewGetColumnNames so we need clean-up.
+                */

> 10. Still out of 66. And wrong end: '* */' must be '*/'.@@ -4714,9 +4718,9 @@ selectExpander(Walker * pWalker, Select * p)
-                        * Will be overwritten with pointer as unique
-                        * identifier.
-                        * */
+                        * Will be overwritten with pointer as
+                        * unique identifier.
+                        */

> 11. Out of 66.
@@ -4729,15 +4732,17 @@ selectExpander(Walker * pWalker, Select * p)
-                       /* Rewrite old name with correct pointer. */
+                       /*
+                        * Rewrite old name with correct pointer.
+                        */

  reply	other threads:[~2018-05-15 15:56 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-11  8:49 [tarantool-patches] [PATCH v5 0/3] sql: refactor SQL Parser structures Kirill Shcherbatov
2018-05-11  8:49 ` [tarantool-patches] [PATCH v5 1/3] sql: fix code style in sqlite3Pragma Kirill Shcherbatov
2018-05-11 20:59   ` [tarantool-patches] " Vladislav Shpilevoy
2018-05-11  8:49 ` [tarantool-patches] [PATCH v5 2/3] sql: remove SQL fields from Table and Column Kirill Shcherbatov
2018-05-11 20:59   ` [tarantool-patches] " Vladislav Shpilevoy
2018-05-14 11:20     ` Kirill Shcherbatov
2018-05-14 13:39       ` Vladislav Shpilevoy
2018-05-15 15:56         ` Kirill Shcherbatov [this message]
2018-05-11  8:49 ` [tarantool-patches] [PATCH v5 3/3] sql: space_def* instead of Table* in Expr Kirill Shcherbatov
2018-05-11 20:59   ` [tarantool-patches] " Vladislav Shpilevoy
2018-05-14 11:20     ` Kirill Shcherbatov
2018-05-11  8:58 ` [tarantool-patches] Re: [PATCH v5 0/3] sql: refactor SQL Parser structures Vladislav Shpilevoy
2018-05-11 19:40   ` [tarantool-patches] Re[2]: [tarantool-patches] " Kirill Shcherbatov

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=6f7cfd9a-422b-2cf3-11a1-1ef567aead9a@tarantool.org \
    --to=kshcherbatov@tarantool.org \
    --cc=tarantool-patches@freelists.org \
    --subject='[tarantool-patches] Re: [PATCH v5 2/3] sql: remove SQL fields from Table and Column' \
    /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