Fossil

Check-in [1c40de18]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Get a 10x speedup on long annotations by indexing a field in the temporary "ancestor" table.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:1c40de184393c829e505d8e780c7ee961582fd11
User & Date: drh 2013-09-17 16:08:13
References
2013-10-06
20:28 New ticket [1ec9e865] Flag some commits for "extra attention". artifact: e25458c5 user: anonymous
Context
2013-09-18
12:46
Fix typos in the "Server" documentation. Also remove the "Security Considerations" paragraph at the end, which seems to be mostly common-sense. check-in: dd357f7f user: drh tags: trunk
2013-09-17
16:08
Get a 10x speedup on long annotations by indexing a field in the temporary "ancestor" table. check-in: 1c40de18 user: drh tags: trunk
15:05
When using private stubs, really use private stubs check-in: 07c8b730 user: jan.nijtmans tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/descendants.c.

201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
** direct ancestor as the largest generation number.
*/
void compute_direct_ancestors(int rid, int N){
  Stmt ins;
  Stmt q;
  int gen = 0;
  db_multi_exec(
    "CREATE TEMP TABLE IF NOT EXISTS ancestor(rid INTEGER,"
                                            " generation INTEGER PRIMARY KEY);"
    "DELETE FROM ancestor;"
    "INSERT INTO ancestor VALUES(%d, 0);", rid
  );
  db_prepare(&ins, "INSERT INTO ancestor VALUES(:rid, :gen)");
  db_prepare(&q,
    "SELECT pid FROM plink"







|







201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
** direct ancestor as the largest generation number.
*/
void compute_direct_ancestors(int rid, int N){
  Stmt ins;
  Stmt q;
  int gen = 0;
  db_multi_exec(
    "CREATE TEMP TABLE IF NOT EXISTS ancestor(rid INTEGER UNIQUE NOT NULL,"
                                            " generation INTEGER PRIMARY KEY);"
    "DELETE FROM ancestor;"
    "INSERT INTO ancestor VALUES(%d, 0);", rid
  );
  db_prepare(&ins, "INSERT INTO ancestor VALUES(:rid, :gen)");
  db_prepare(&q,
    "SELECT pid FROM plink"