[BACK]Return to mandocdb.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/mandocdb.c between version 1.136 and 1.137

version 1.136, 2014/04/16 18:59:43 version 1.137, 2014/04/16 21:36:18
Line 100  struct inodev {
Line 100  struct inodev {
   
 struct  mpage {  struct  mpage {
         struct inodev    inodev;  /* used for hashing routine */          struct inodev    inodev;  /* used for hashing routine */
         int64_t          recno;   /* id in mpages SQL table */          int64_t          pageid;  /* pageid in mpages SQL table */
         enum form        form;    /* format from file content */          enum form        form;    /* format from file content */
         char            *sec;     /* section from file content */          char            *sec;     /* section from file content */
         char            *arch;    /* architecture from file content */          char            *arch;    /* architecture from file content */
Line 1099  mpages_merge(struct mchars *mc, struct mparse *mp)
Line 1099  mpages_merge(struct mchars *mc, struct mparse *mp)
                                          * to the target.                                           * to the target.
                                          */                                           */
   
                                         if (mpage_dest->recno)                                          if (mpage_dest->pageid)
                                                 dbadd_mlink(mlink);                                                  dbadd_mlink(mlink);
   
                                         if (NULL == mlink->next)                                          if (NULL == mlink->next)
Line 1892  dbadd_mlink(const struct mlink *mlink)
Line 1892  dbadd_mlink(const struct mlink *mlink)
         SQL_BIND_TEXT(stmts[STMT_INSERT_LINK], i, mlink->dsec);          SQL_BIND_TEXT(stmts[STMT_INSERT_LINK], i, mlink->dsec);
         SQL_BIND_TEXT(stmts[STMT_INSERT_LINK], i, mlink->arch);          SQL_BIND_TEXT(stmts[STMT_INSERT_LINK], i, mlink->arch);
         SQL_BIND_TEXT(stmts[STMT_INSERT_LINK], i, mlink->name);          SQL_BIND_TEXT(stmts[STMT_INSERT_LINK], i, mlink->name);
         SQL_BIND_INT64(stmts[STMT_INSERT_LINK], i, mlink->mpage->recno);          SQL_BIND_INT64(stmts[STMT_INSERT_LINK], i, mlink->mpage->pageid);
         SQL_STEP(stmts[STMT_INSERT_LINK]);          SQL_STEP(stmts[STMT_INSERT_LINK]);
         sqlite3_reset(stmts[STMT_INSERT_LINK]);          sqlite3_reset(stmts[STMT_INSERT_LINK]);
 }  }
Line 1944  dbadd(struct mpage *mpage, struct mchars *mc)
Line 1944  dbadd(struct mpage *mpage, struct mchars *mc)
         SQL_BIND_TEXT(stmts[STMT_INSERT_PAGE], i, mpage->desc);          SQL_BIND_TEXT(stmts[STMT_INSERT_PAGE], i, mpage->desc);
         SQL_BIND_INT(stmts[STMT_INSERT_PAGE], i, FORM_SRC == mpage->form);          SQL_BIND_INT(stmts[STMT_INSERT_PAGE], i, FORM_SRC == mpage->form);
         SQL_STEP(stmts[STMT_INSERT_PAGE]);          SQL_STEP(stmts[STMT_INSERT_PAGE]);
         mpage->recno = sqlite3_last_insert_rowid(db);          mpage->pageid = sqlite3_last_insert_rowid(db);
         sqlite3_reset(stmts[STMT_INSERT_PAGE]);          sqlite3_reset(stmts[STMT_INSERT_PAGE]);
   
         while (NULL != mlink) {          while (NULL != mlink) {
Line 1961  dbadd(struct mpage *mpage, struct mchars *mc)
Line 1961  dbadd(struct mpage *mpage, struct mchars *mc)
                 i = 1;                  i = 1;
                 SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, key->mask);                  SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, key->mask);
                 SQL_BIND_TEXT(stmts[STMT_INSERT_NAME], i, key->rendered);                  SQL_BIND_TEXT(stmts[STMT_INSERT_NAME], i, key->rendered);
                 SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, mpage->recno);                  SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, mpage->pageid);
                 SQL_STEP(stmts[STMT_INSERT_NAME]);                  SQL_STEP(stmts[STMT_INSERT_NAME]);
                 sqlite3_reset(stmts[STMT_INSERT_NAME]);                  sqlite3_reset(stmts[STMT_INSERT_NAME]);
                 if (key->rendered != key->key)                  if (key->rendered != key->key)
Line 1976  dbadd(struct mpage *mpage, struct mchars *mc)
Line 1976  dbadd(struct mpage *mpage, struct mchars *mc)
                 i = 1;                  i = 1;
                 SQL_BIND_INT64(stmts[STMT_INSERT_KEY], i, key->mask);                  SQL_BIND_INT64(stmts[STMT_INSERT_KEY], i, key->mask);
                 SQL_BIND_TEXT(stmts[STMT_INSERT_KEY], i, key->rendered);                  SQL_BIND_TEXT(stmts[STMT_INSERT_KEY], i, key->rendered);
                 SQL_BIND_INT64(stmts[STMT_INSERT_KEY], i, mpage->recno);                  SQL_BIND_INT64(stmts[STMT_INSERT_KEY], i, mpage->pageid);
                 SQL_STEP(stmts[STMT_INSERT_KEY]);                  SQL_STEP(stmts[STMT_INSERT_KEY]);
                 sqlite3_reset(stmts[STMT_INSERT_KEY]);                  sqlite3_reset(stmts[STMT_INSERT_KEY]);
                 if (key->rendered != key->key)                  if (key->rendered != key->key)
Line 2172  create_tables:
Line 2172  create_tables:
         sql = "CREATE TABLE \"mpages\" (\n"          sql = "CREATE TABLE \"mpages\" (\n"
               " \"desc\" TEXT NOT NULL,\n"                " \"desc\" TEXT NOT NULL,\n"
               " \"form\" INTEGER NOT NULL,\n"                " \"form\" INTEGER NOT NULL,\n"
               " \"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL\n"                " \"pageid\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL\n"
               ");\n"                ");\n"
               "\n"                "\n"
               "CREATE TABLE \"mlinks\" (\n"                "CREATE TABLE \"mlinks\" (\n"
               " \"sec\" TEXT NOT NULL,\n"                " \"sec\" TEXT NOT NULL,\n"
               " \"arch\" TEXT NOT NULL,\n"                " \"arch\" TEXT NOT NULL,\n"
               " \"name\" TEXT NOT NULL,\n"                " \"name\" TEXT NOT NULL,\n"
               " \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) "                " \"pageid\" INTEGER NOT NULL REFERENCES mpages(pageid) "
                 "ON DELETE CASCADE\n"                  "ON DELETE CASCADE\n"
               ");\n"                ");\n"
               "CREATE INDEX mlinks_pageid_idx ON mlinks (pageid);\n"                "CREATE INDEX mlinks_pageid_idx ON mlinks (pageid);\n"
Line 2187  create_tables:
Line 2187  create_tables:
               "CREATE TABLE \"names\" (\n"                "CREATE TABLE \"names\" (\n"
               " \"bits\" INTEGER NOT NULL,\n"                " \"bits\" INTEGER NOT NULL,\n"
               " \"name\" TEXT NOT NULL,\n"                " \"name\" TEXT NOT NULL,\n"
               " \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) "                " \"pageid\" INTEGER NOT NULL REFERENCES mpages(pageid) "
                 "ON DELETE CASCADE\n"                  "ON DELETE CASCADE\n"
               ");\n"                ");\n"
               "\n"                "\n"
               "CREATE TABLE \"keys\" (\n"                "CREATE TABLE \"keys\" (\n"
               " \"bits\" INTEGER NOT NULL,\n"                " \"bits\" INTEGER NOT NULL,\n"
               " \"key\" TEXT NOT NULL,\n"                " \"key\" TEXT NOT NULL,\n"
               " \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) "                " \"pageid\" INTEGER NOT NULL REFERENCES mpages(pageid) "
                 "ON DELETE CASCADE\n"                  "ON DELETE CASCADE\n"
               ");\n"                ");\n"
               "CREATE INDEX keys_pageid_idx ON keys (pageid);\n";                "CREATE INDEX keys_pageid_idx ON keys (pageid);\n";
Line 2207  create_tables:
Line 2207  create_tables:
   
 prepare_statements:  prepare_statements:
         SQL_EXEC("PRAGMA foreign_keys = ON");          SQL_EXEC("PRAGMA foreign_keys = ON");
         sql = "DELETE FROM mpages WHERE id IN "          sql = "DELETE FROM mpages WHERE pageid IN "
                 "(SELECT pageid FROM mlinks WHERE "                  "(SELECT pageid FROM mlinks WHERE "
                 "sec=? AND arch=? AND name=?)";                  "sec=? AND arch=? AND name=?)";
         sqlite3_prepare_v2(db, sql, -1, &stmts[STMT_DELETE_PAGE], NULL);          sqlite3_prepare_v2(db, sql, -1, &stmts[STMT_DELETE_PAGE], NULL);

Legend:
Removed from v.1.136  
changed lines
  Added in v.1.137

CVSweb