[tarantool-patches] Re: [PATCH] sql: refactor primary index creation

  • From: "n.pettik" <korablev@xxxxxxxxxxxxx>
  • To: tarantool-patches@xxxxxxxxxxxxx
  • Date: Fri, 20 Jul 2018 17:34:26 +0300

LGTM, except for 1 comment.

@@ -862,10 +861,6 @@ sqlite3AddDefaultValue(Parse * pParse, ExprSpan * pSpan)
 * a primary key (and this is the second primary key) then create an
 * error.
 *
- * Set the Table.iPKey field of the table under construction to be the
- * index of the INTEGER PRIMARY KEY column.
- * Table.iPKey is set to -1 if there is no INTEGER PRIMARY KEY.
- *
 * If the key is not an INTEGER PRIMARY KEY, then create a unique
 * index for the key.  No index is created for INTEGER PRIMARY KEYs.
 */
@@ -923,14 +918,24 @@ sqlite3AddPrimaryKey(Parse * pParse,    /* Parsing 
context */
          (pTab->def->fields[iCol].type == FIELD_TYPE_INTEGER) &&
          sortOrder != SORT_ORDER_DESC) {
              assert(autoInc == 0 || autoInc == 1);
-             pTab->iPKey = iCol;
-             pTab->keyConf = (u8) onError;
              if (autoInc) {
                      pTab->iAutoIncPKey = iCol;
                      pTab->tabFlags |= TF_Autoincrement;
              }
-             if (pList)
-                     pParse->iPkSortOrder = pList->a[0].sort_order;
+             struct sqlite3 *db = pParse->db;
+             struct ExprList *list;
+             struct Token token;
+             sqlite3TokenInit(&token, pTab->def->fields[iCol].name);
+             list = sql_expr_list_append(db, NULL,
+                                         sqlite3ExprAlloc(db, TK_ID,
+                                                          &token, 0));
+             if (list == NULL)
+                     return;

I guess here should also be goto primary_key_exit;

Other related posts: